新しいアプリケーションまたはコンポーネントを作成する場合は、.NET Framework アセンブリを作成することをお勧めします。 ただし、Visual Basic を使用すると、.NET Framework コンポーネントを COM に簡単に公開できます。 これにより、COM コンポーネントを必要とする以前のアプリケーション スイートに新しいコンポーネントを提供できます。 このチュートリアルでは、Visual Basic を使用して、COM クラス テンプレートの有無にかかわらず、.NET Framework オブジェクトを COM オブジェクトとして公開する方法について説明します。
COM オブジェクトを公開する最も簡単な方法は、COM クラス テンプレートを使用することです。 このテンプレートは、新しいクラスを作成し、COM オブジェクトとして相互運用性レイヤーを持つクラスを生成するようにプロジェクトを構成し、オペレーティング システムに登録します。
注
アンマネージ コードで使用する COM オブジェクトとして Visual Basic で作成されたクラスを公開することもできますが、これは真の COM オブジェクトではなく、Visual Basic では使用できません。 詳細については、「 .NET Framework アプリケーションでの COM 相互運用性」を参照してください。
注
次の手順では、一部の Visual Studio ユーザー インターフェイス要素の名前や場所がコンピューターに異なる場合があります。 これらの要素は、使用している Visual Studio エディションと使用する設定によって決まります。 詳細については、「IDEのカスタマイズ」を参照してください。
COM クラス テンプレートを使用して COM オブジェクトを作成するには
[ ファイル ] メニューの [新しいプロジェクト] をクリックして 、新しい Windows アプリケーション プロジェクトを開きます。
[プロジェクトの種類] フィールドの [新しいプロジェクト] ダイアログ ボックスで、Windows が選択されていることを確認します。 [テンプレート] ボックスの一覧から [クラス ライブラリ] を選択し、[OK] をクリックします。 新しいプロジェクトが表示されます。
[プロジェクト] メニューから [新しい項目の追加] を選択します。 [ 新しい項目の追加 ] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧から [COM クラス] を選択し、[追加] をクリックします。 Visual Basic によって新しいクラスが追加され、COM 相互運用用に新しいプロジェクトが構成されます。
プロパティ、メソッド、イベントなどのコードを COM クラスに追加します。
[ビルド] メニューから [ Build ClassLibrary1 ] を 選択します。 Visual Basic によってアセンブリがビルドされ、COM オブジェクトがオペレーティング システムに登録されます。
COM クラス テンプレートを使用せずに COM オブジェクトを作成する
COM クラス テンプレートを使用する代わりに、COM クラスを手動で作成することもできます。 この手順は、コマンド ラインから作業している場合や、COM オブジェクトの定義方法をより詳細に制御する場合に役立ちます。
COM オブジェクトを生成するようにプロジェクトを設定するには
[ ファイル ] メニューの [ NewProject] をクリックして、新しい Windows アプリケーション プロジェクトを開きます。
[プロジェクトの種類] フィールドの [新しいプロジェクト] ダイアログ ボックスで、Windows が選択されていることを確認します。 [テンプレート] ボックスの一覧から [クラス ライブラリ] を選択し、[OK] をクリックします。 新しいプロジェクトが表示されます。
ソリューション エクスプローラーで、プロジェクトを右クリックし、[プロパティ] をクリックします。 プロジェクト デザイナーが表示されます。
[コンパイル] タブをクリックします。
[ COM 相互運用機能の登録 ] チェック ボックスをオンにします。
COM オブジェクトを作成するようにクラスのコードを設定するには
ソリューション エクスプローラーで、Class1.vbをダブルクリックしてコードを表示します。
クラスの名前を
ComClass1
に変更します。ComClass1
に次の定数を追加します。 COM オブジェクトに必要なグローバル一意識別子 (GUID) 定数が格納されます。Public Const ClassId As String = "" Public Const InterfaceId As String = "" Public Const EventsId As String = ""
[ ツール ] メニューの [ Guid の作成] をクリックします。 [ GUID の作成 ] ダイアログ ボックスで、[ レジストリの形式 ] をクリックし、[ コピー] をクリックします。 [終了] をクリックします。
ClassId
の空の文字列を GUID に置き換え、先頭と末尾の中かっこを削除します。 たとえば、Guidgen によって提供される GUID が"{2C8B0AEE-02C9-486e-B809-C780A11530FE}"
場合、コードは次のように表示されます。Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
次の例のように、
InterfaceId
定数とEventsId
定数に対して前の手順を繰り返します。Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91" Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
注
GUID が新しく一意であることを確認します。そうしないと、COM コンポーネントが他の COM コンポーネントと競合する可能性があります。
次の例のように、クラス ID、インターフェイス ID、およびイベント ID の GUID を指定して、
ComClass
属性をComClass1
に追加します。<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> Public Class ComClass1
COM クラスにはパラメーターなしの
Public Sub New()
コンストラクターが必要です。または、クラスが正しく登録されません。 パラメーターなしのコンストラクターをクラスに追加します。Public Sub New() MyBase.New() End Sub
プロパティ、メソッド、およびイベントをクラスに追加し、
End Class
ステートメントで終了します。 [ ビルド ] メニューから [ ソリューションのビルド ] を選択します。 Visual Basic によってアセンブリがビルドされ、COM オブジェクトがオペレーティング システムに登録されます。注
Visual Basic で生成した COM オブジェクトは、他の Visual Basic アプリケーションでは使用できません。これは、実際の COM オブジェクトではないためです。 このような COM オブジェクトへの参照を追加しようとすると、エラーが発生します。 詳細については、「 .NET Framework アプリケーションでの COM 相互運用性」を参照してください。
こちらも参照ください
.NET