共用方式為


Walkthrough: Creating COM Objects with Visual Basic 2005 

When creating new applications or components, it is best to create .NET Framework assemblies. However, Visual Basic 2005 also makes it easy to expose a .NET Frameowrk component to COM. This allows you to provide new components for legacy applications suites that require COM components. This walkthrough demonstrates how to use Visual Basic to expose .NET Framework objects as COM objects, both with and without the COM class template.

The easiest way to expose COM objects is by using the COM class template. 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.

Note

Although you can also expose a class created with 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. For more information, see COM Interoperability in .NET Framework Applications.

Note

The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. To change your settings, choose Import and Export Settings on the Tools menu. For more information, see Visual Studio Settings.

To create a COM object using the COM class template

  1. Open a new Windows Application project from the File menu by clicking New Project.

  2. In the New Project dialog box under the Project Types field, check that Windows is selected. 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. Select COM Class from the Templates list, and then click Add. Visual Basic adds a new class and configures the new project for COM interop.

  5. Add code such as properties, methods, and events to the COM class.

  6. Select Build ClassLibrary1 from the Build menu. Visual Basic builds the assembly and registers the COM object with the operating system.

Creating COM Objects Without the COM Class Template

You can also create a COM class manually instead of using the COM class template. This procedure is helpful when working from the command line or when you want more control over how COM objects are defined.

To set up your project to generate a COM object

  1. Open a new Windows Application project from the File menu by clicking on New Project.

  2. In the New Project dialog box under the Project Types field, check that Windows is selected. Select Class Library from the Templates list, and then click OK. The new project is displayed.

  3. In the Solution Explorer, right-click on your project, and then click Properties. The Project Designer is displayed.

  4. Click the Compile tab.

  5. Select the Register for COM Interop check box.

To set up the code in your class to create a COM object

  1. In the Solution Explorer, double-click Class1.vb to display its code.

  2. Rename the class to ComClass1.

  3. Add the following constants to ComClass1. 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. To obtain a Globally Unique Identifier (GUID), launch Guidgen.exe to start the Guidgen utility. Select Registry Format from the list of formats provided by the Guidgen application. Click the New GUID button to generate the GUID, and click the Copy button to copy the GUID to the Clipboard.

  5. Replace the empty string for the ClassId with the GUID, removing the leading and trailing braces. 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. 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"
    

    Note

    Make sure that the GUIDs are new and unique; otherwise, your COM component could conflict with other COM components.

  7. Add the ComClass attribute to ComClass1, specifying the GUIDs for the Class ID, Interface ID, and events Events ID as in the following example:

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
  8. 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. Add properties, methods, and events to the class, ending it with an End Class statement. Select Build Solution from the Build menu. Visual Basic builds the assembly and registers the COM object with the operating system.

    Note

    The COM objects you generate with Visual Basic 2005 cannot be used by other Visual Basic 2005 applications because they are not true COM objects. Attempts to add references to such COM objects will raise an error. For details, see COM Interoperability in .NET Framework Applications.

See Also

Tasks

Walkthrough: Implementing Inheritance with COM Objects

Reference

ComClassAttribute Class
#Region Directive

Other Resources

COM Interop
COM Interoperability in .NET Framework Applications