| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

COM

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

COM

Python Win32 Extensions | Component Object Model http://www.microsoft.com/japan/com/

概要

  • COM は、特定の開発言語に依存せず、C言語やJavaなど、様々な言語により開発を行うことができる。
  • COM によって、ソフトウェア コンポーネントは通信することができる。
  • COM を利用することで再利用可能なコンポーネントを作成し、アプリケーションを構成するコンポーネントを相互連携できる。
  • COM は、Microsoft Office ファミリ製品のようなアプリケーションで利用されている。
    • COM OLE 技術を利用することで Word 文書を Excel スプレッドシートの中のデータに動的にリンク
    • COM オートメーション技術によって、ユーザーが自分のアプリケーションで、繰り返しの作業を行ったり、あるアプリケーションを別のアプリケーションから制御するようなスクリプトを記述することができる

COM テクノロジファミリー

COM インターフェースを提供するアプリケーションサービス

以下など多数

  • Microsoft Message Queuing (MSMQ)
  • Microsoft Active Directory (AD)
  • Windows Management and Instrumentation (WMI)


COM と .NET の関連

  • COM と .NET は相補的な関係にある
  • .NET 共通言語ランタイムは、COM との双方向で透過的な統合機能を提供。
  • COM と .NET アプリケーションやコンポーネントはそれぞれのシステムから機能を利用することができる
.NET と COM の相互呼び出し

COM+

COM+ は COM を基盤としたサービスと技術の名称

  • COM+ COM コンポーネント技術と Microsoft Transaction Server (MTS) のアプリケーション ホスト機能の両方を提供
  • COM+ は自動的にリソースのプーリングや、非接続アプリケーション、イベントのパブリッシュやサブスクライブ、分散トランザクションといった困難なプログラミング作業を自動的に処理
  • .NET Framework のSystem.EnterpriseServices 名前空間の機能を通じて提供

COM と Windows レジストリ

COMコンポーネントはCLSIDをキーにディスク上の位置情報を持っている

  • COMコンポーネントは、DLLかEXE
  • COMは、レジストリから、CLSIDを参照することで、ディスク上からコンポーネントを探し出す。
  • 以下はShell.Application のCLSID

0313 py win32com00.jpg

プログラム名から、間接的にCLSIDを取得できる。

レジストリ HKEY_CLASSES_ROOT 以下に登録されている、Shell.Application

0314 py win32com01.jpg

  • HKEY_CLASSES_ROOT\Shell.Application

0315 py win32com02.jpg