マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

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 には、大きく分けて、

  • 拡張子
  • ProgID
  • GUID

の3種類の情報があります。

  • レジストリで、ProgID をたどると、サブキーに GUID がある場合があります。
  • その場合は、 さらにその GUID キーをたどると、 COM部品の情報があります。

COM部品の実体

COM部品の実体は、レジストリの GUID の下、

  • InprocServer32 の値を確認すると、どのdllファイルが提供しているか分かります。
  • COM部品の実体が、InprocServer32 ではなく LocalServer32 の値に書かれている場合もあります。

InprocServer32、LocalServer32

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

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

DCOM

参考

内部リンク

STA

DLL/COMユーザ

COMのメモリ・リーク

EternalWindows?

kekyoの丼

  • COM
    http://www.kekyo.net/category/com
    • COMのアパートメント
      • (1) スレッド同期の隠蔽
      • (2) コンポーネントファサード
      • (3) スレッドの属性とコンポーネント
      • (4) スレッド親和性
      • (5) CoInitializeEx?は初期化ではない
      • (6) アパートメントの種類はどのように決まるのか
      • ・・・
    • ・・・

[連載! とことん VC++] COM 再入門


Tags: :Windows, :プログラミング, :.NET開発


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-18 (水) 18:49:42 (426d)