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 に書かれています。 *レジストリ [#w63423fa] HKEY_CLASSES_ROOT には、大きく分けて、 -拡張子 -ProgID -GUID の3種類の情報があります。 -レジストリで、ProgID をたどると、サブキーに GUID がある場合があります。 -その場合は、 さらにその GUID キーをたどると、 COM部品の情報があります。 **COM部品の実体 [#a2875ecc] COM部品の実体は、レジストリの GUID の下、 -InprocServer32 の値を確認すると、どのdllファイルが提供しているか分かります。 -COM部品の実体が、InprocServer32 ではなく LocalServer32 の値に書かれている場合もあります。 **InprocServer32、LocalServer32 [#y9b69c53] -InprocServer32に書かれている場合~ COM部品を呼び出したプロセスと同じプロセスの中で動作するCOM部品。~ -LocalServer32に書かれている場合~ COM部品を呼び出したのとは別のプロセス内で動作し、~ 呼び出し元とはプロセス間通信して動作するCOM部品。~ どちらも、COMですが、使用方法としては同じです。~ (デバッグやトラブルシュートでは、この違いは重要になってきますが)~ *DCOM [#a06d9c01]