!!!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+ *Distributed COM (DCOM) *ActiveXR Controls. !COM インターフェースを提供するアプリケーションサービス 以下など多数 *Microsoft Message Queuing (MSMQ) *Microsoft Active Directory (AD) *Windows Management and Instrumentation (WMI) !COM と .NET の関連 *COM と .NET は相補的な関係にある *.NET 共通言語ランタイムは、COM との双方向で透過的な統合機能を提供。 *COM と .NET アプリケーションやコンポーネントはそれぞれのシステムから機能を利用することができる ::.NET と COM の相互呼び出し *[.NET からの COM コンポーネントの呼び出す|http://www.microsoft.com/japan/msdn/net/upgrade/callcomcomp.aspx] *[COM から .NET コンポーネントを呼び出す|http://msdn.microsoft.com/library/en-us/dndotnet/html/callnetfrcom.asp] !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 {{ref_image py_win32com00.jpg}} !プログラム名から、間接的にCLSIDを取得できる。 ::レジストリ HKEY_CLASSES_ROOT 以下に登録されている、Shell.Application {{ref_image py_win32com01.jpg}} *HKEY_CLASSES_ROOT\Shell.Application {{ref_image py_win32com02.jpg}}