逐步解說:使用 Visual Basic 建立 COM 物件

建立新的應用程式或元件時,最好建立 .NET Framework 組件。 不過,Visual Basic 也可以讓您輕鬆地將 .NET Framework 元件公開至至 COM。 這可讓您為需要 COM 元件的早期應用程式套件提供新的元件。 本逐步解說示範如何使用 Visual Basic 將 .NET Framework 物件公開為 COM 物件,同時搭配 COM 類別範本和不含 COM 類別範本使用。

公開 COM 物件最簡單的方式是使用 COM 類別範本。 此範本會建立新的類別,然後將您的專案設定為產生具有互通性層的類別作為 COM 物件,並將其註冊至作業系統。

注意

雖然您也可以公開在 Visual Basic 中建立為 COM 物件的類別,以供非受控程式碼使用,但此項目不是真正的 COM 物件,而且無法供 Visual Basic 使用。 如需詳細資訊,請參閱 .NET Framework 應用程式中的 COM 互通性

注意

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化

若要使用 COM 類別範本建立 COM 物件

  1. 按一下 [新增專案],從 [檔案] 功能表開啟新的 Windows 應用程式專案。

  2. 在 [專案類型] 欄位下的 [新增專案] 對話方塊中,確認已選取 [Windows]。 從 [範本] 清單中選取 [類別庫],然後按一下 [確定]。 隨即顯示新專案。

  3. 選取 [專案] 功能表中的 [加入新項目]。 隨即顯示 [ 新增項目] 對話方塊。

  4. 從 [範本] 清單中選取 [COM 類別],然後按一下 [新增]。 Visual Basic 隨即新增類別,並設定 COM Interop 的新專案。

  5. 將屬性、方法和事件之類的程式碼新增至 COM 類別。

  6. 從 [組建] 功能表中選取 [組建 ClassLibrary1]。 Visual Basic 會建置組件,並向作業系統註冊 COM 物件。

不透過 COM 類別範本建立 COM 物件

您也可以手動建立 COM 類別,而不要使用 COM 類別範本。 當您透過命令列進行處理,或想要更充分掌控 COM 物件的定義方式時,此程序會很有幫助。

若要設定專案以產生 COM 物件

  1. 按一下 [新增專案],從 [檔案] 功能表開啟新的 Windows 應用程式專案。

  2. 在 [專案類型] 欄位下的 [新增專案] 對話方塊中,確認已選取 [Windows]。 從 [範本] 清單中選取 [類別庫],然後按一下 [確定]。 隨即顯示新專案。

  3. 在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [屬性]。 [專案設計工具] 隨即顯示。

  4. 按一下 [編譯] 索引標籤。

  5. 選取 [註冊 COM Interop] 核取方塊。

若要在您的類別中設定程式碼以建立 COM 物件

  1. 在 [方案總管] 中,按兩下 [Class1.vb] 以顯示其程式碼。

  2. 將類別重新命名為 ComClass1

  3. 將下列常數新增至 ComClass1。 這些項目會儲存 COM 物件所需的全域唯一識別碼 (GUID) 常數。

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. 在 [工具] 功能表上,按一下 [建立 GUID]。 在 [建立 GUID] 對話方塊中,依序按一下 [登錄格式] 和 [複製]。 按一下 [結束]

  5. 使用 GUID 取代 ClassId 的空字串,並移除前置和尾端的大括弧。 例如,如果 Guidgen 提供的 GUID 為 "{2C8B0AEE-02C9-486e-B809-C780A11530FE}",則您的程式碼應如下所示。

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. 針對 InterfaceIdEventsId 常數重複上述步驟,如下列範例所示。

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

    注意

    請確定 GUID 為新且唯一的 GUID;否則,您的 COM 元件可能會與其他 COM 元件衝突。

  7. ComClass 屬性新增至 ComClass1,指定類別識別碼、介面識別碼和事件識別碼的 GUID,如下列範例所示:

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)>
    Public Class ComClass1
    
  8. COM 類別必須具有無參數 Public Sub New() 的建構函式,否則將無法正確註冊類別。 將無參數建構函式新增至類別:

    Public Sub New()
        MyBase.New()
    End Sub
    
  9. 將屬性、方法和事件新增至類別,並以 End Class 陳述式作結。 從 [組建] 功能表中選取 [組建解決方案]。 Visual Basic 會建置組件,並向作業系統註冊 COM 物件。

    注意

    您使用 Visual Basic 產生的 COM 物件無法供其他 Visual Basic 應用程式使用,因為這些物件並非真正的 COM 物件。 嘗試新增針對此類 COM 物件的參考將引發錯誤。 如需詳細資料,請參閱 .NET Framework 應用程式中的 COM 互通性

另請參閱