逐步解說:使用 Visual Basic 建立 COM 物件
建立新應用程式或元件時,最好建立 .NET Framework 組件。 然而,Visual Basic 也能讓 .NET Framework 元件公開 (Expose) 至 COM 的工作變得更容易。 這可以讓您提供新元件給需要 COM 元件的舊版應用程式套件。 本逐步解說將示範在使用和未使用 COM 類別樣板 (Template) 的情況下,如何使用 Visual Basic 將 .NET Framework 物件公開為 COM 物件。
公開 COM 物件最簡單的方式是使用 COM 類別樣板。 COM 類別樣板會建立新類別,然後設定您的專案讓所產生的類別和互通 (Interoperability) 層成為 COM 物件,接著在作業系統上加以註冊。
注意事項 |
---|
雖然也可將使用 Visual Basic 建立的類別公開為 COM 物件,以供 Unmanaged 程式碼使用,但它不是真正的 COM 物件,Visual Basic 無法使用它。如需詳細資訊,請參閱 .NET Framework 應用程式中的 COM 互通性 (Visual Basic)。 |
注意事項 |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要使用 COM 類別樣板來建立 COM 物件
按一下 [檔案] 功能表中的 [新增專案],即可開啟新的 Windows 應用程式專案。
在 [新增專案] 對話方塊的 [專案類型] 欄位下,檢查是否已選取 Windows。 從 [樣板] 清單選取 [類別庫],接著按一下 [確定]。 接著會出現新專案。
從 [專案] 功能表選取 [加入新項目]。 接著會顯示 [加入新項目] 對話方塊。
從 [樣板] 清單選取 [COM 類別],然後按一下 [加入]。 Visual Basic 便會加入新的類別,並設定 COM Interop 的新專案。
將程式碼 (例如屬性 (Property)、方法和事件) 加入至 COM 類別。
從 [建置] 功能表選取 [建置 ClassLibrary1]。 Visual Basic 便會建置組件,並向作業系統註冊 COM 物件。
不使用 COM 類別樣板建立 COM 物件
您也可以手動建立 COM 類別,而不需使用 COM 類別樣板。 在命令列執行作業或是要進一步控制定義 COM 物件的方式時,這個程序相當有用。
若要設定您的專案來產生 COM 物件
在 [檔案] 功能表中按一下 [新增專案],開啟新的 Windows 應用程式專案。
在 [新增專案] 對話方塊的 [專案類型] 欄位下,檢查是否已選取 Windows。 從 [樣板] 清單選取 [類別庫],接著按一下 [確定]。 接著會出現新專案。
在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [屬性]。 [專案設計工具] 隨即出現。
按一下 [編譯] 索引標籤。
選取 [註冊 COM Interop] 核取方塊。
若要在您的類別中設定程式碼來建立 COM 物件
在 [方案總管] 中,按兩下 [Class1.vb] 顯示其程式碼。
將類別重新命名為 ComClass1。
將下列常數加入至 ComClass1。 它們會儲存 COM 物件一定要有的全域唯一識別項 (GUID) 常數。
Public Const ClassId As String = "" Public Const InterfaceId As String = "" Public Const EventsId As String = ""
在 [工具] 功能表上按一下 [建立 GUID]。 在 [建立 GUID] 對話方塊中,按一下 [登錄格式],再按一下 [複製]。 按一下 [結束]。
使用 GUID 取代 ClassId 的空白字串,且移除前後的大括號。 例如,如果 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 元件發生衝突。
將 ComClass 屬性 (Attribute) 加入至 ComClass1,為類別 ID、介面 ID 和事件 ID 指定 GUID,如下列範例所示:
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> Public Class ComClass1
COM 類別必須有無參數的 Public Sub New() 建構函式 (Constructor),否則類別將無法正確註冊。 將無參數的建構函式加入至類別:
Public Sub New() MyBase.New() End Sub
將屬性、方法和事件加入至類別,並以 End Class 陳述式結尾。 從 [建置] 功能表中選取 [建置方案]。 Visual Basic 便會建置組件,並向作業系統註冊 COM 物件。
注意事項 其他 Visual Basic 應用程式不可使用藉由 Visual Basic 所產生的 COM 物件,原因是它們不是真正的 COM 物件。嘗試將參考加入至這類 COM 物件將會引發錯誤。如需詳細資訊,請參閱 .NET Framework 應用程式中的 COM 互通性 (Visual Basic)。
請參閱
工作
逐步解說:實作 COM 物件的繼承 (Visual Basic)