Exemplarische Vorgehensweise: Erstellen von COM-Objekten in Visual Basic

Beim Erstellen neuer Anwendungen oder Komponenten empfiehlt es sich, .NET Framework-Assemblys zu erstellen. Mit Visual Basic ist es jedoch ebenfalls einfach, eine .NET Framework-Komponente für COM verfügbar zu machen. So können Sie neue Komponenten für frühere Anwendungssammlungen bereitstellen, die COM-Komponenten erfordern. Diese exemplarische Vorgehensweise zeigt, wie Sie mithilfe von Visual Basic .NET Framework-Objekte als COM-Objekte verfügbar machen können – sowohl mit als auch ohne COM-Klassenvorlage.

Der einfachste Weg, COM-Objekte verfügbar zu machen, ist die Verwendung der COM-Klassenvorlage. Diese Vorlage erstellt eine neue Klasse und konfiguriert Ihr Projekt dann so, dass die Klasse mit einer Interoperabilitätsebene als COM-Objekt generiert und beim Betriebssystem registriert wird.

Hinweis

Obwohl Sie eine in Visual Basic erstellte Klasse auch als COM-Objekt für nicht verwalteten Code verfügbar machen können, ist diese kein echtes COM-Objekt und kann von Visual Basic nicht genutzt werden. Weitere Informationen finden Sie unter COM-Interoperabilität in .NET Framework-Anwendungen.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

So erstellen Sie ein COM-Objekt mithilfe der COM-Klassenvorlage

  1. Öffnen Sie über das Menü Datei ein neues Windows-Anwendungsprojekt, indem Sie auf Neues Projekt klicken.

  2. Überprüfen Sie im Dialogfeld Neues Projekt unterhalb des Felds Projekttypen, ob „Windows“ ausgewählt ist. Wählen Sie in der Liste Vorlagen die Option Klassenbibliothek aus, und klicken Sie dann auf OK. Das neue Projekt wird angezeigt.

  3. Wählen Sie im Menü Projekt die Option Neues Element hinzufügen aus. Das Dialogfeld Neues Element hinzufügen wird angezeigt.

  4. Wählen Sie in der Liste Vorlagen die Option COM-Klasse aus, und klicken Sie dann auf Hinzufügen. Visual Basic fügt eine neue Klasse hinzu und konfiguriert das neue Projekt für COM-Interop.

  5. Fügen Sie der COM-Klasse Code hinzu, z. B. Eigenschaften, Methoden und Ereignisse.

  6. Wählen Sie im Menü Erstellen die Option Klassenbibliothek1 erstellen aus. Visual Basic erstellt die Assembly und registriert das COM-Objekt beim Betriebssystem.

Erstellen von COM-Objekten ohne COM-Klassenvorlage

Sie können eine COM-Klasse auch manuell erstellen, anstatt die COM-Klassenvorlage zu verwenden. Dieses Verfahren ist hilfreich, wenn Sie von der Befehlszeile aus arbeiten, oder wenn Sie mehr Kontrolle darüber haben möchten, wie COM-Objekte definiert werden.

So richten Sie ihr Projekt zum Generieren eines COM-Objekts ein

  1. Öffnen Sie über das Menü Datei ein neues Windows-Anwendungsprojekt, indem Sie auf Neues Projekt klicken.

  2. Überprüfen Sie im Dialogfeld Neues Projekt unterhalb des Felds Projekttypen, ob „Windows“ ausgewählt ist. Wählen Sie in der Liste Vorlagen die Option Klassenbibliothek aus, und klicken Sie dann auf OK. Das neue Projekt wird angezeigt.

  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und klicken Sie dann auf Eigenschaften. Der Projekt-Designer wird geöffnet.

  4. Klicken Sie auf die Registerkarte Kompilieren.

  5. Aktivieren Sie das Kontrollkästchen Für COM-Interop registrieren.

So richten Sie den Code in Ihrer Klasse zum Erstellen eines COM-Objekts ein

  1. Doppelklicken Sie im Projektmappen-Explorer auf Class1.vb, um den zugehörigen Code anzuzeigen.

  2. Ändern Sie den Namen der Klasse in ComClass1.

  3. Fügen Sie ComClass1 die folgenden Konstanten hinzu. Sie speichern die GUID-Konstanten (Globally Unique Identifier), die COM-Objekte aufweisen müssen.

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. Klicken Sie im Menü Extras auf den Befehl GUID erstellen. Klicken Sie im Dialogfeld GUID erstellen auf Registrierungsformat und anschließend auf Kopieren. Klicken Sie auf Beenden.

  5. Ersetzen Sie die leere Zeichenfolge für ClassId durch die GUID, und entfernen Sie dabei die führenden und nachgestellten geschweiften Klammern. Wenn die von Guidgen bereitgestellte GUID zum Beispiel "{2C8B0AEE-02C9-486e-B809-C780A11530FE}" lautet, sollte Ihr Code wie folgt aussehen:

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. Wiederholen Sie die vorherigen Schritte für die Konstanten InterfaceId und EventsId wie im folgenden Beispiel.

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

    Hinweis

    Stellen Sie sicher, dass die GUIDs neu und eindeutig sind. Andernfalls kann es zu Konflikten zwischen Ihrer COM-Komponente und anderen COM-Komponenten kommen.

  7. Fügen Sie das Attribut ComClass zu ComClass1 hinzu, und geben Sie die GUIDs für die Klassen-ID, die Schnittstellen-ID und die Ereignis-ID wie im folgenden Beispiel an:

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)>
    Public Class ComClass1
    
  8. COM-Klassen müssen einen parameterlosen Public Sub New()-Konstruktor aufweisen, sonst wird die Klasse nicht ordnungsgemäß registriert. Fügen Sie der Klasse einen parameterlosen Konstruktor hinzu:

    Public Sub New()
        MyBase.New()
    End Sub
    
  9. Fügen Sie der Klasse Eigenschaften, Methoden und Ereignisse hinzu, und schließen Sie sie mit einer End Class-Anweisung ab. Wählen Sie im Menü Erstellen die Option Projektmappe erstellen aus. Visual Basic erstellt die Assembly und registriert das COM-Objekt beim Betriebssystem.

    Hinweis

    Die mit Visual Basic generierten COM-Objekte können nicht von anderen Visual Basic-Anwendungen verwendet werden, da sie keine echten COM-Objekte sind. Der Versuch, Verweise auf solche COM-Objekte hinzuzufügen, führt zu einem Fehler. Ausführliche Informationen finden Sie unter COM-Interoperabilität in .NET Framework-Anwendungen.

Siehe auch