チュートリアル: Visual Basic を使用した COM オブジェクトの作成Walkthrough: Creating COM Objects with Visual Basic

新しいアプリケーションまたはコンポーネントを作成する場合は、.NET Framework アセンブリを作成することをお勧めします。When creating new applications or components, it is best to create .NET Framework assemblies. ただし、Visual Basic を使用すると、.NET Framework コンポーネントを COM に簡単に公開できます。However, Visual Basic also makes it easy to expose a .NET Framework component to COM. これにより、COM コンポーネントを必要とする以前のアプリケーションスイートに新しいコンポーネントを提供できるようになります。This enables you to provide new components for earlier application suites that require COM components. このチュートリアルでは、Visual Basic を使用して、COM クラステンプレートを使用するかどうかにかかわらず、.NET Framework オブジェクトを COM オブジェクトとして公開する方法について説明します。This walkthrough demonstrates how to use Visual Basic to expose .NET Framework objects as COM objects, both with and without the COM class template.

Com オブジェクトを公開する最も簡単な方法は、COM クラステンプレートを使用することです。The easiest way to expose COM objects is by using the COM class template. COM クラステンプレートは新しいクラスを作成し、クラスと相互運用性レイヤーを COM オブジェクトとして生成し、オペレーティングシステムに登録するようにプロジェクトを構成します。The COM class template creates a new class, and then configures your project to generate the class and interoperability layer as a COM object and register it with the operating system.

注意

Visual Basic で作成されたクラスをアンマネージコードで使用する COM オブジェクトとして公開することもできますが、これは真の COM オブジェクトではなく、Visual Basic では使用できません。Although you can also expose a class created in Visual Basic as a COM object for unmanaged code to use, it is not a true COM object and cannot be used by Visual Basic. 詳細については、「 .NET Framework アプリケーションでの COM 相互運用性」を参照してください。For more information, see COM Interoperability in .NET Framework Applications.

注意

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。The Visual Studio edition that you have and the settings that you use determine these elements. 詳細については、「IDE をカスタマイズする」をご覧ください。For more information, see Personalizing the IDE.

COM クラステンプレートを使用して COM オブジェクトを作成するにはTo create a COM object by using the COM class template

  1. [ファイル] メニューの [新しいプロジェクト] をクリックして、新しい Windows アプリケーションプロジェクトを開きます。Open a new Windows Application project from the File menu by clicking New Project.

  2. 新しいプロジェクト ダイアログボックスの プロジェクトの種類 フィールドで、Windows が選択されていることを確認します。In the New Project dialog box under the Project Types field, check that Windows is selected. [テンプレート] ボックスの一覧から [クラスライブラリ] を選択し、[ OK] をクリックします。Select Class Library from the Templates list, and then click OK. 新しいプロジェクトが表示されます。The new project is displayed.

  3. [プロジェクト] メニューの [新しい項目の追加] をクリックします。Select Add New Item from the Project menu. [新しい項目の追加] ダイアログ ボックスが表示されます。The Add New Item dialog box is displayed.

  4. [テンプレート] ボックスの一覧から [COM クラス] を選択し、 [追加] をクリックします。Select COM Class from the Templates list, and then click Add. Visual Basic は、新しいクラスを追加し、COM 相互運用のために新しいプロジェクトを構成します。Visual Basic adds a new class and configures the new project for COM interop.

  5. プロパティ、メソッド、イベントなどのコードを COM クラスに追加します。Add code such as properties, methods, and events to the COM class.

  6. [ビルド] メニューの [ビルドと] を選択します。Select Build ClassLibrary1 from the Build menu. Visual Basic は、アセンブリをビルドし、オペレーティングシステムに COM オブジェクトを登録します。Visual Basic builds the assembly and registers the COM object with the operating system.

Com クラステンプレートを使用しない COM オブジェクトの作成Creating COM Objects without the COM Class Template

Com クラステンプレートを使用する代わりに、手動で COM クラスを作成することもできます。You can also create a COM class manually instead of using the COM class template. この手順は、コマンドラインから作業する場合や、COM オブジェクトの定義方法をより細かく制御する必要がある場合に役立ちます。This procedure is helpful when you are working from the command line or when you want more control over how COM objects are defined.

COM オブジェクトを生成するようにプロジェクトを設定するにはTo set up your project to generate a COM object

  1. [ファイル] メニューの [NewProject] をクリックして、新しい Windows アプリケーションプロジェクトを開きます。Open a new Windows Application project from the File menu by clicking NewProject.

  2. 新しいプロジェクト ダイアログボックスの プロジェクトの種類 フィールドで、Windows が選択されていることを確認します。In the New Project dialog box under the Project Types field, check that Windows is selected. [テンプレート] ボックスの一覧から [クラスライブラリ] を選択し、[ OK] をクリックします。Select Class Library from the Templates list, and then click OK. 新しいプロジェクトが表示されます。The new project is displayed.

  3. ソリューション エクスプローラーで、プロジェクトを右クリックして、 [プロパティ] をクリックします。In Solution Explorer, right-click your project, and then click Properties. プロジェクトデザイナーが表示されます。The Project Designer is displayed.

  4. [コンパイル] タブをクリックします。Click the Compile tab.

  5. [ COM 相互運用機能に登録する] チェックボックスをオンにします。Select the Register for COM Interop check box.

COM オブジェクトを作成するためにクラス内のコードを設定するにはTo set up the code in your class to create a COM object

  1. ソリューションエクスプローラーで、 [Class1] をダブルクリックしてコードを表示します。In Solution Explorer, double-click Class1.vb to display its code.

  2. クラスの名前を ComClass1 に変更します。Rename the class to ComClass1.

  3. に次の定数をComClass1追加します。Add the following constants to ComClass1. これらは、COM オブジェクトに必要なグローバル一意識別子 (GUID) 定数を格納します。They will store the Globally Unique Identifier (GUID) constants that the COM objects are required to have.

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. [ツール] メニューの [GUID の作成] をクリックします。On the Tools menu, click Create Guid. [GUID の作成] ダイアログ ボックスで、 [レジストリ形式] をクリックし、 [コピー] をクリックします。In the Create GUID dialog box, click Registry Format and then click Copy. [終了] をクリックします。Click Exit.

  5. ClassId空の文字列を GUID に置き換えて、先頭と末尾の中かっこを削除します。Replace the empty string for the ClassId with the GUID, removing the leading and trailing braces. たとえば、guidgen.exe によって提供される GUID "{2C8B0AEE-02C9-486e-B809-C780A11530FE}"がの場合、コードは次のようになります。For example, if the GUID provided by Guidgen is "{2C8B0AEE-02C9-486e-B809-C780A11530FE}" then your code should appear as follows.

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. 次の例に示すようInterfaceIdEventsId 、定数および定数に対して前の手順を繰り返します。Repeat the previous steps for the InterfaceId and EventsId constants, as in the following example.

    Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91"
    Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
    

    注意

    Guid が新規で一意であることを確認します。それ以外の場合、COM コンポーネントは他の COM コンポーネントと競合する可能性があります。Make sure that the GUIDs are new and unique; otherwise, your COM component could conflict with other COM components.

  7. 次の例にComClass1示すように、属性をに追加し、クラスid、インターフェイスID、およびイベントidのguidを指定します。ComClassAdd the ComClass attribute to ComClass1, specifying the GUIDs for the Class ID, Interface ID, and Events ID as in the following example:

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)>
    Public Class ComClass1
    
  8. COM クラスにはパラメーターなしPublic Sub New()のコンストラクターが必要です。または、クラスが正しく登録されません。COM classes must have a parameterless Public Sub New() constructor, or the class will not register correctly. パラメーターなしのコンストラクターをクラスに追加します。Add a parameterless constructor to the class:

    Public Sub New()
        MyBase.New()
    End Sub
    
  9. プロパティ、メソッド、およびイベントをクラスに追加し、 End Classステートメントで終了します。Add properties, methods, and events to the class, ending it with an End Class statement. [ビルド] メニューの [ソリューションのビルド] を選択します。Select Build Solution from the Build menu. Visual Basic は、アセンブリをビルドし、オペレーティングシステムに COM オブジェクトを登録します。Visual Basic builds the assembly and registers the COM object with the operating system.

    注意

    Visual Basic で生成した COM オブジェクトは、実際の COM オブジェクトではないため、他の Visual Basic アプリケーションでは使用できません。The COM objects you generate with Visual Basic cannot be used by other Visual Basic applications because they are not true COM objects. そのような COM オブジェクトへの参照を追加しようとすると、エラーが発生します。Attempts to add references to such COM objects will raise an error. 詳細については、「 .NET Framework アプリケーションでの COM 相互運用性」を参照してください。For details, see COM Interoperability in .NET Framework Applications.

関連項目See also