方法 : COM ラッパーを作成する
更新 : 2007 年 11 月
コンポーネント オブジェクト モデル (COM: Component Object Model) ラッパーを作成するには、Microsoft Visual Studio 2005 の機能または .NET Framework のツールである Tlbimp.exe と Regasm.exe を使用します。どちらの方法でも 2 種類の COM ラッパーが生成されます。
タイプ ライブラリからのランタイム呼び出し可能ラッパー。COM オブジェクトをマネージ コードで実行します。
必要なレジストリ設定を含む COM 呼び出し可能ラッパー。マネージ オブジェクトをネイティブ アプリケーションで実行します。
Visual Studio 2005 では、COM ラッパーを参照としてプロジェクトに追加できます。
マネージ アプリケーションでの COM オブジェクトのラップ
Visual Studio を使用してランタイム呼び出し可能ラッパーを作成するには
マネージ アプリケーションのプロジェクトを開きます。
[プロジェクト] メニューの [すべてのファイルを表示] をクリックします。
[プロジェクト] メニューの [参照の追加] をクリックします。
[参照の追加] ダイアログ ボックスで、[COM] タブをクリックし、使用するコンポーネントを選択して [OK] をクリックします。
ソリューション エクスプローラで、プロジェクトの [参照設定] フォルダに COM コンポーネントが追加されていることを確認します。
これで、COM オブジェクトにアクセスするためのコードを作成できます。まずオブジェクトを宣言します。これには、Visual Basic 2005 の Imports ステートメント、Visual C# 2005 の Using ステートメントなどを使用します。
メモ : |
---|
Microsoft Office コンポーネントをプログラミングする場合は、最初に Microsoft ダウンロード センターから Microsoft Office プライマリ相互運用機能アセンブリ (PIA: Primary Interop Assembly) をインストールします。手順 4. で、目的の Office 製品向けに用意されているオブジェクト ライブラリの最新バージョンを選択します (Microsoft Word 11.0 Object Library など)。サンプルについては、「Microsoft Word 関連の技術サンプル」および「Microsoft Excel 関連の技術サンプル」を参照してください。 |
.NET Framework のツールを使用してランタイム呼び出し可能ラッパーを作成するには
- タイプ ライブラリ インポータ (Tlbimp.exe) ツールを実行します。
このツールは、元のタイプ ライブラリで定義された型のランタイム メタデータを含むアセンブリを作成します。
ネイティブ アプリケーションでのマネージ オブジェクトのラップ
Visual Studio を使用して COM 呼び出し可能ラッパーを作成するには
ネイティブ コードで実行するマネージ クラス用にクラス ライブラリ プロジェクトを作成します。このクラスには既定のコンストラクタが必要です。
AssemblyInfo ファイル内で、4 つの部分で構成される完全なバージョン番号がアセンブリに指定されていることを確認します。この番号は、Windows レジストリでバージョンを管理するために必要となります。バージョン番号の詳細については、「アセンブリのバージョン管理」を参照してください。
[プロジェクト] メニューの [プロパティ] をクリックします。
[コンパイル] タブをクリックします。
[COM の相互運用機能に登録] チェック ボックスをオンにします。
プロジェクトをビルドすると、COM 相互運用機能に対してアセンブリが自動的に登録されます。Visual Studio 2005 でネイティブ アプリケーションをビルドする場合は、[プロジェクト] メニューの [参照の追加] をクリックすることでアセンブリを使用できます。
.NET Framework のツールを使用して COM 呼び出し可能ラッパーを作成するには
- アセンブリ登録ツール (Regasm.exe) ツールを実行します。
このツールは、アセンブリ メタデータを読み取って、必要なエントリをレジストリに追加します。この結果、COM クライアントが .NET Framework クラスを透過的に作成できるようになります。アセンブリは、ネイティブ COM クラスと同じように使用できます。
任意のディレクトリにあるアセンブリで Regasm.exe を実行し、さらにグローバル アセンブリ キャッシュ ツール (Gacutil.exe) を実行してそのアセンブリをグローバル アセンブリ キャッシュに移動できます。アセンブリを移動しても、場所のレジストリ エントリは無効になりません。これは、アセンブリが他の場所で見つからない場合に常にグローバル アセンブリ キャッシュが調べられるからです。