Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
COM(Component Object Model) は、Microsoft が作り出した、プログラムや部品の呼び出しを共通的に行える仕組みです。
COMをベースに、 コントロール、ActiveX などの部品も作られてきました。
COMに関しては、下のページも参考ください。
Component Object Model - wikipedia
利用 †
COMを利用する際は、ProgID を使用して、COM部品のオブジェクトを得ます。
- vbsの例 (作成する場合)
set fso = CreateObject("Scripting.FileSystemObject")
- vbsの例 (作成済みのオブジェクトを取得する場合)
set word = GetObject("c:\temp\word.doc", "Word.Document")
Scripting.FileSystemObject? や "Word.Document" は ProgID の例です。
ProgID は、 レジストリの HKEY_CLASSES_ROOT に書かれています。
レジストリ †
HKEY_CLASSES_ROOT には、大きく分けて、
の3種類の情報があります。
- レジストリで、ProgID をたどると、サブキーに GUID がある場合があります。
- その場合は、 さらにその GUID キーをたどると、 COM部品の情報があります。
COM部品の実体 †
COM部品の実体は、レジストリの GUID の下、
- InprocServer32 の値を確認すると、どのdllファイルが提供しているか分かります。
- COM部品の実体が、InprocServer32 ではなく LocalServer32 の値に書かれている場合もあります。
InprocServer32、LocalServer32 †
- InprocServer32に書かれている場合
COM部品を呼び出したプロセスと同じプロセスの中で動作するCOM部品。
- LocalServer32に書かれている場合
COM部品を呼び出したのとは別のプロセス内で動作し、
呼び出し元とはプロセス間通信して動作するCOM部品。
どちらも、COMですが、使用方法としては同じです。
(デバッグやトラブルシュートでは、この違いは重要になってきますが)
DCOM †
参考 †
EternalWindows? †
kekyoの丼 †
- COM
http://www.kekyo.net/category/com
- COMのアパートメント
- (1) スレッド同期の隠蔽
- (2) コンポーネントファサード
- (3) スレッドの属性とコンポーネント
- (4) スレッド親和性
- (5) CoInitializeEx?は初期化ではない
- (6) アパートメントの種類はどのように決まるのか
- ・・・
- ・・・
[連載! とことん VC++] COM 再入門 †