COMat TECH
COM - 暇つぶし2ch421:デフォルトの名無しさん
14/07/24 19:57:03.53 s9ARWR1P.net
COMによるOffice automationを調べていると
COM/ATLというような用語も見つかるのですが、COMとCOM/ATLというのは
異なる技術ですか?
私の理解では、C++でCOMやる場合は、CoInitializeExやCoUninitializeを使って
やる方式のことだと思っています。COM/ATLというのが分りません。
どなたか簡単に解説お願いします。

422:片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
14/07/24 20:19:40.19 BX5qEEGf.net
「active template library」で検索

423:デフォルトの名無しさん
14/08/07 17:34:11.54 utSp7A7J.net
>>421
プログラムが大きくなるとコンパイルに時間がかかるから
共通部分と分けるじゃない? あれが静的ライブラリで lib

さらに共通であちこちのexeで使われるようなものは1度コンパイルしておいて
動的にメモリに読み込んで使えるようにすればいいじゃん これが動的ライブラリで dll

さらに動的ライブラリdllにもC++のオブジェクト構造のような関数以外のものも入れたいなぁ
さらに言語非依存にして、そこで参照回数などのオブジェクトのメモリ管理も加えたCOM技術で作ったdll
COMサーバーという

この外部オブジェクトライブラリを使うのに、CoInitializeExやCoUninitializeを使うのはCOMクライアント
COMクライアントは別にC++でなくてもJavaScriptでもVBでもC#でもPerlでもなんでもいい

COMサーバーは大別してインプロセスサーバー、アウトプロセスサーバーがあるけど
ぶっちゃけ一から書くのはメンドクサイ
そこでライブラリ作ろうか~ということで出来たのがATL/WTL

424:デフォルトの名無しさん
14/08/07 17:50:19.99 oQyOe1xD.net
わっかりやすーい

425:デフォルトの名無しさん
14/08/07 19:32:56.15 zGwpFhqC.net
参照カウントなんてどこで増やしてんの?

426:デフォルトの名無しさん
14/08/07 20:30:34.00 utSp7A7J.net
>>425
参照カウントはIUnkhownが担当してる
なぜ参照カウントが必要かというと使われなくなったオブジェクトを提供するために
dllをメモリに読み込んでいるわけだけど、つかわれなくなったら破棄するため

ちなみに何度も1個だけインターフェースを作ったり破棄したりする可能性のあるCOMは
dllの読み込みや破棄を連続で行わないためにClassFactoryを実装することが薦められている


COMは最初は言語非依存じゃなくて単に動的ライブラリdllにオブジェクト機能を持たせるだけだった
(インターフェイスの階層構造で、仮想ポインタの配列順で実現してた)
だから以前はヘッダが必要だった
つまりC++専用だった

IDispatchというインターフェイス名でを動的に関数ポインタを取得できるインターフェイスを作ることで
プログラム内にインターフェイス名を書くだけでよくなり言語非依存になった
従来の関数ポインタ順とは別にIDispatchを両方用意することをディアルインターフェースという
このあたりからOLEとか呼ばれるようになった

さらにこのインターフェイス名やGUIDはOS(というかレジストリ)に記録するものなので
Windowsアプリからはどこからでも利用できるはず・・・・
それならブラウザ内の埋め込みスクリプトからも利用できるようにしようということで ActiveX と名前を変え

ActiveXサーバーを作るものだから ATL(Active Template Library)なんだと思う

427:デフォルトの名無しさん
14/08/08 01:05:55.34 hqeBSYtp.net
COMはレジストリ登録必須じゃなくて従来のdllと同じようにアプリケーションに閉じた形で使えたら
もう少し使いでがあったんだがなぁ。

428:デフォルトの名無しさん
14/08/08 01:12:38.28 B23vVFp/.net
>>427
dllをLoadLibraryして関数呼べばCOMオブジェクト作れるでしょ?
レジストリ登録はCoCreateInstanceでCOMオブジェクト作るなら必要ってだけで
自前でやる分には何の問題もない

429:デフォルトの名無しさん
14/08/08 01:27:40.29 hqeBSYtp.net
なるほど、自分でDllGetClassObject呼んでやればいいのか。
もう使うことはないだろうが、参考になった。

430:デフォルトの名無しさん
14/08/08 04:42:26.72 1UU7vf/D.net
>>426
すべてが行き当たりばったりなんですね

431:デフォルトの名無しさん
14/08/08 07:00:09.81 /GOXeWKw.net
>>423
細かい突っ込みだが WTL は COM と関係ないべ

432:デフォルトの名無しさん
14/08/08 09:24:29.43 gW33htdT.net
概出かも知れませんが
URLリンク(keicode.com)
URLリンク(keicode.com)

433:デフォルトの名無しさん
14/10/23 13:56:20.92 ISc0F2Qf.net
OLEオブジェクトにゼロデイ脆弱性、Microsoftが暫定対策プログラムを公開
URLリンク(www.forest.impress.co.jp)

434:デフォルトの名無しさん
14/11/07 16:14:18.00 tCwEoRvN.net
分散オブジェクトは距離に応じた最適な大きさ(機能)があって、
一律の仕組みにすることが最良ではなかった。

435:デフォルトの名無しさん
14/12/06 08:07:09.24 1X8GhzUe.net
>>430
だがそれがいい

436:デフォルトの名無しさん
14/12/08 00:18:29.73 imKvrg71.net
COMは.NETの登場で廃れると思ってたが結局10年経っても廃れなかったな、ネイティブコードの言語が健在だから

437:デフォルトの名無しさん
14/12/08 10:11:02.56 rVPpfxjW.net
非同期処理には向いてないっぽい

438:デフォルトの名無しさん
14/12/12 09:04:26.82 s5Npqjiu.net
DCOMの非同期版みたいなのをMSが考案してMSJかMSDNマガジンでそれを読んだが、全く流行らなかった。名前も思い出せないわ。

439:デフォルトの名無しさん
14/12/12 11:51:31.03 RkbkbG+A.net
結局、MS Office は .NET では書かれないんだからな。そりゃCOMとOLEが残るわな。

440:デフォルトの名無しさん
14/12/12 11:55:33.92 r3Fvlg1D.net
OOOとかLibreOとかGoogleSpreadsheetとかで間に合うのに
なんでみんな有料のものを喜んで買うんだ

441:デフォルトの名無しさん
14/12/12 12:16:02.48 j/Rc/sNK.net
MS自体がデスクトップアプリで.NETなんか使わんと言ってるようなもんだからな

442:デフォルトの名無しさん
14/12/13 00:14:39.65 pBf+dW7w.net
DLLとしてのCOM実装は実行オーバーベッドもないし、それでいてコンポーネントベースのオブジェクト指向を実現できるからな、シンプルでよく出来てる

流行り廃りではなく、ネイティブコードならいつまでも使い続けらる技術だよ

.NETには何の魅力も長所も感じない

動作が遅い、デフォで導入されてない.NETフレームワークのインストールも、OSに任せればインターネット接続が要るし、丸ごと再頒布するにはデカ杉

443:デフォルトの名無しさん
14/12/13 00:17:26.75 hYWK5mUP.net
最近のOSには入ってるしインストールの手間はないだろ

444:デフォルトの名無しさん
14/12/13 00:25:07.03 pBf+dW7w.net
Win8からは.NET fxはVer4.5しかインストールされてないよ、デフォでは

.NET3とか2のエンジンは、Windows Featureのon/offの所からから明示的に導入しないと、.NETランタイム不在と認識される

.NET4は3や2の代用にはならない

445:デフォルトの名無しさん
14/12/13 00:34:37.63 pBf+dW7w.net
.NET fx2の再頒布モジュールは30~40MBでたいして大きくはないんだけど、それを製品に添付してインストールしようとすると、Win8はそれを利用しないんだよね

確かにインストールは開始するんだけど、持ち込んだ.NET fx2は古すぎて気に入らないのか、無視してネットからDLしようとする

かといってもっと新しい.NET fx2再頒布モジュールがある訳でもない

446:デフォルトの名無しさん
14/12/13 04:28:04.73 jrsNMnhJ.net
何がんばっちゃってんのこいつ?

447:デフォルトの名無しさん
14/12/13 06:14:24.22 KcZztYF+.net
URLリンク(blog.trendmicro.co.jp)

448:名無しさん@そうだ選挙に行こう
14/12/14 11:37:06.17 X+6lyliS.net
.NETからDLL呼ぶためにはP/Invokeを手で書かないといけないけど、COMDLLならTLBからインタロップ自動生成してるから楽
まあ普通のDLLもIDLファイル作っとけばいいんだろうけど、普通やらないもんな

449:デフォルトの名無しさん
15/01/02 20:24:42.85 mlj15zVW.net
Inside COM(日本語版)って結構高く売れんのかね?

450:デフォルトの名無しさん
15/01/02 20:29:14.43 F7Nf/+TC.net
>>449
今更新規に学ぶ人なんか居ないから売れない
既に理解してる身としてはまだまだ使い道ある技術だけどね

451:デフォルトの名無しさん
15/01/03 01:17:50.23 AuGuhWCh.net
>>449
読んだのはだいぶ前だけどそこそこ勉強にはなったな
COMの利点はC++で作ったDLLを他の言語から使えるって事かな
OSの基本機能はC++で実装する事がほとんどだろうからCOM自体は永久に無くならんだろうね

452:デフォルトの名無しさん
15/01/03 11:28:31.16 duDbuP4G.net
ステマ乙

453:デフォルトの名無しさん
15/01/03 15:18:55.60 AuGuhWCh.net
>>452
ステマって誰が儲かんだよw
ま、いい売り文句を言えたと理解しておこう

454:デフォルトの名無しさん
15/01/06 08:32:22.24 c/PNiN5K.net
元々はC++のvtblを巧みに利用したインターフェース志向の技法で、DLLというコンポーネント分散によって言語依存が消えた

でBasic言語にC++のvtbl構造を模倣する仕組みを入れてCOMをネイティブにあつかえるようにしてVBAが出来た

てことなんだろうと思う

455:デフォルトの名無しさん
15/01/06 23:31:34.41 KFlyuGQs.net
>>454
VBからCOMが使えるのは間違い無いが、VBから使う時は名前(文字列)によるメソッド検索をしてると
Inside COMに書いてあった気がする (QueryInterfaceだっけ?)
どっちにしても、言語に依存しないのはいい事だ

LinuxはC言語が唯一のインターフェースだから、そろそろ言語非依存のインターフェースが普及してほしいよ
候補は色々あるけど、どれも普及はしてないな

456:デフォルトの名無しさん
15/01/06 23:34:43.36 C2mmH5Le.net
IDispatchだろ

457:デフォルトの名無しさん
15/01/06 23:47:22.80 KFlyuGQs.net
>>456
すまん…スゲー昔の記憶だけ書き込んでた…
反省はしてない

458:デフォルトの名無しさん
15/01/06 23:50:36.05 kiKfNKwr.net
>>456
だね、俗に言うレイトバインディング
VB4まではそれしか使えなかった

459:デフォルトの名無しさん
15/01/07 00:33:09.37 A8Vu2ukb.net
>>455
Win32だってC言語ベースのAPIだからね
DirectXとか一部だけでしょCOMなのは

C++の抽象クラスとvtblをつかったポリモーフィズム技法をDynamic Libraryに適用すればCOMもどきはできるんじゃないかな

WindowsでのCOM DLLみたいに、OSからの認識規則なんかを誰かが決めてやらないとダメだけど

460:デフォルトの名無しさん
15/01/07 02:06:30.69 HBIMK+Li.net
ORBとかCORBAでしょ
XPCOMとかもあったけどLinuxでは結局どれも流行らなかったのかな
Linuxだと普通GPLでソース公開だから、そんなもの使わなくてもスタティックリンクでokってことなのかもな

461:デフォルトの名無しさん
15/01/07 07:25:24.74 nx6cbjbg.net
>>449
Inside OLE(日本語版)がAmazonで良い値が付いてるな
売ろうかw

462:デフォルトの名無しさん
15/01/07 08:53:21.20 v+HQiVT1.net
初期のOLEはCOMではなくDDEで動いてたんだっけ

OLEはアタマが付いていかなくて最後まで仕組みを理解できなかったな

463:デフォルトの名無しさん
15/01/07 09:04:35.98 7s8hjn62.net
いまはwebAPI全盛だな

464:デフォルトの名無しさん
15/01/09 00:37:23.61 5zBZY3tC.net
>>460
Linux上だと↓これだけあるかな

CORBA (Orbit2 GNOMEが使ってた)
XPCOM (Firefox)
UNO (OpenOffice.orgとその派生)
D-Bus

よく考えたらD-Busもコンポーネントモデルとも言えるしかなり普及してたよ
つう事でLinuxにはD-Busがあると言えるかな

465:デフォルトの名無しさん
15/04/04 22:47:14.80 ActYb9Xv.net
ActiveXコントロールは死んだ
URLリンク(www.artonx.org)

466:デフォルトの名無しさん
15/04/05 09:35:59.42 Y8CRHpsW.net
クソみたいな文章だな
世の中にひり出すまえに推敲しろ

467:デフォルトの名無しさん
15/04/07 19:42:58.87 qktNI4KL.net
COMは死なぬ。COMこそ人類の夢だからだ

468:デフォルトの名無しさん
15/04/07 23:02:11.04 Bchxa3Il.net
>>467
COMってマンコと同じなんだなw

469:デフォルトの名無しさん
15/04/08 19:44:02.14 5pE9Fokq.net
>>468
つまりは、都市伝説だといいたいのか

470:デフォルトの名無しさん
15/05/07 22:55:18.82 yfN65J+v.net
ActiveXコントロールがIEのためだけのものだという誤解を解く方法

471:デフォルトの名無しさん
15/05/18 20:25:05.77 oJXHJ+WI.net
次世代ブラウザEdge関係のCOMインターフェイスってどうなるのん?

472:デフォルトの名無しさん
15/05/28 17:06:44.48 qrMVO/gn.net
提供されないと思われ

473:デフォルトの名無しさん
15/05/28 17:47:37.58 e6ztGmIB.net
じゃあオートメーションでブラウザが必要なときはどうすんのさ

474:デフォルトの名無しさん
15/08/23 09:56:27.24 cZ8t4prN.net
Microsoft Edge、WebDriver サポートを発表
URLリンク(buildingedge.blogspot.jp)

475:デフォルトの名無しさん
15/08/23 10:34:40.27 hZLJ7+aO.net
スレリンク(tech板:433番)

476:デフォルトの名無しさん
15/08/28 22:37:54.12 opvHfyoQ.net
[Windows 10]UWPアプリでWebViewコントロールを使ってみた。
URLリンク(www.ka-net.org)

477:_
15/09/05 13:29:13.46 b0+gtEMA.net
a

478:デフォルトの名無しさん
15/11/10 12:17:00.27 aBSI5Ff+.net
初学者なんですが
HRESULT hageMethod( IHoge **ppHoge )
{
 *ppHoge = NULL;
 IHoge *pHoge;....
 pHoge->QueryInterface(IID_PPV_ARGS(ppHoge ));
 pHoge->Release();
}
このQueryInterfaceのところってなにやってるんですか?
同じ型のコピーを作ってるみたいな感じ?
pHogeを直接返せないとかですかね

479:デフォルトの名無しさん
15/11/11 20:40:15.01 RY0eiki2.net
HRESULTを返してない不完全なコードに見えるし
おれにもさっぱりわからんけど

480:デフォルトの名無しさん
15/12/03 11:05:36.09 IgpEN7lw.net
シェルのコンテキストメニューハンドラーを作ってるんですが、
ショートカットファイル(.lnk)を受け取ったとき、IDataObjectの中にリンクファイル自体じゃなくて
リンク先のファイルが入っています。
リンクファイル自体が欲しいんですが
この動作を制御することってできないんでしょうか?

481:片山博文MZ ◆T6xkBnTXz7B0
16/04/08 19:04:18.35 eaIwZ6It.net
URLリンク(github.com)
アンパンマン、新しい顔ができたよ!

482:デフォルトの名無しさん
16/04/08 20:11:51.90 BALYf2ws.net
>>481
URLリンク(katahiromz.web.fc2.com)
蟻さん好きなの?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch