Open棟梁Project - マイクロソフト系技術情報 Wiki

* 目次 [#l9568f70]
#contents

* 概要 [#m4ffc982]
COM(Component Object Model) は、Microsoft が作り出した、プログラムや部品の呼び出しを共通的に行える仕組みです。~
COMをベースに、 コントロール、ActiveX などの部品も作られてきました。

COMに関しては、下のページも参考ください。~
[[Component Object Model - wikipedia:http://ja.wikipedia.org/wiki/Component_Object_Model]]

*利用 [#afbe7fe1]
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 には、大きく分けて、 拡張子、ProgID, GUID の3種類の情報があります。
*レジストリ [#w63423fa]

レジストリで、ProgID をたどると、サブキーに GUID がある場合があります。~
その場合は、 さらにその GUID キーをたどると、 COM部品の情報があります。
HKEY_CLASSES_ROOT には、大きく分けて、
-拡張子
-ProgID
-GUID

COM部品の実体は、レジストリの GUID の下、 InprocServer32 の値を確認すると、
どのdllファイルが提供しているか分かります。~
COM部品の実体が、InprocServer32 ではなく LocalServer32 の値に書かれている場合もあります。
の3種類の情報があります。

InprocServer32 は、COM部品を呼び出したプロセスと同じプロセスの中で動作するCOM部品。~
LocalServer32 は、COM部品を呼び出したのとは別のプロセス内で動作し、呼び出し元とはプロセス間通信して動作するCOM部品。~
-レジストリで、ProgID をたどると、サブキーに GUID がある場合があります。
-その場合は、 さらにその GUID キーをたどると、 COM部品の情報があります。

**COM部品の実体 [#a2875ecc]
COM部品の実体は、レジストリの GUID の下、 
-InprocServer32 の値を確認すると、どのdllファイルが提供しているか分かります。
-COM部品の実体が、InprocServer32 ではなく LocalServer32 の値に書かれている場合もあります。

**InprocServer32、LocalServer32 [#y9b69c53]

-InprocServer32に書かれている場合~
COM部品を呼び出したプロセスと同じプロセスの中で動作するCOM部品。~

-LocalServer32に書かれている場合~
COM部品を呼び出したのとは別のプロセス内で動作し、~
呼び出し元とはプロセス間通信して動作するCOM部品。~

どちらも、COMですが、使用方法としては同じです。~
(デバッグやトラブルシュートでは、この違いは重要になってきますが)~

COMに関しては、下のページも参考ください。~
[[Component Object Model - wikipedia:http://ja.wikipedia.org/wiki/Component_Object_Model]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS