Exemplarische Vorgehensweise: Erstellen von COM-Objekten in Visual Basic

Wenn Sie neue Anwendungen oder Komponenten erstellen, ist es am sinnvollsten, .NET Framework-Assemblys zu erstellen. Mit Visual Basic können .NET Framework-Komponenten jedoch auch problemlos für COM zur Verfügung gestellt werden. So können neue Komponenten für ältere Anwendungen bereitgestellt werden, die COM-Komponenten erfordern. In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie Sie Visual Basic verwenden, um .NET Framework-Objekte sowohl mit als auch ohne COM-Klassenvorlage als COM-Objekte verfügbar zu machen.

Am einfachsten können Sie COM-Objekte mit der COM-Klassenvorlage zur Verfügung stellen. Die COM-Klassenvorlage erstellt eine neue Klasse und konfiguriert anschließend das Projekt, um die Klasse und die Interoperabilitätsschicht als COM-Objekt zu generieren und dieses anschließend im Betriebssystem zu registrieren.

Tipp

Sie können zwar auch eine mit Visual Basic erstellte Klasse als COM-Objekt für nicht verwalteten Code verfügbar machen, allerdings handelt es sich dann nicht um ein echtes COM-Objekt. Dieses Objekt kann in Visual Basic nicht verwendet werden. Weitere Informationen finden Sie unter COM-Interoperabilität in .NET Framework-Anwendungen (Visual Basic).

Tipp

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

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

  1. Klicken Sie im Menü Datei auf Neues Projekt, um ein neues Windows-Anwendungsprojekt zu öffnen.

  2. Überprüfen Sie im Dialogfeld Neues Projekt unter dem Feld Projekttypen, ob Windows ausgewählt ist. Markieren Sie in der Liste Vorlagen den Eintrag Klassenbibliothek, und klicken Sie dann auf OK. Das neue Projekt wird angezeigt.

  3. Klicken Sie im Menü Projekt auf Neues Element hinzufügen. Das Dialogfeld Neues Element hinzufügen wird angezeigt.

  4. Wählen Sie COM-Klasse aus der Liste Vorlagen, 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 zur COM-Klasse Code hinzu, z. B. Eigenschaften, Methoden und Ereignisse.

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

Erstellen von COM-Objekten ohne die COM-Klassenvorlage

Sie können eine COM-Klasse auch manuell ohne Verwendung der COM-Klassenvorlage erstellen. Dieses Vorgehen wird empfohlen, wenn Sie mit der Befehlszeile arbeiten, oder wenn Sie mehr Kontrolle über die Definition von COM-Objekten wünschen.

So richten Sie das Projekt für das Generieren eines COM-Objekts ein

  1. Klicken Sie im Menü Datei auf Neues Projekt, um ein neues Windows-Anwendungsprojekt zu öffnen.

  2. Überprüfen Sie im Dialogfeld Neues Projekt unter dem Feld Projekttypen, ob Windows ausgewählt ist. Markieren Sie in der Liste Vorlagen den Eintrag Klassenbibliothek, 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 der Klasse für das Erstellen eines COM-Objekts ein

  1. Doppelklicken Sie im Projektmappen-Explorer auf Class1.vb, um den Code dieser Klasse anzuzeigen.

  2. Benennen Sie die Klasse in ComClass1 um.

  3. Fügen Sie zu ComClass1 die folgenden Konstanten hinzu. Damit werden die Konstanten der global eindeutigen Bezeichner (GUID – Globally Unique Identifier) gespeichert, über die die COM-Objekte verfügen müssen.

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. Klicken Sie im Menü Extras auf 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 die ClassId durch die GUID, und entfernen Sie die führende sowie die nachfolgende geschweifte Klammer. Wenn die von Guidgen bereitgestellte GUID z. B. "{2C8B0AEE-02C9-486e-B809-C780A11530FE}" lautet, muss der Code folgendermaßen lauten.

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

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

    Tipp

    Stellen Sie sicher, dass die GUIDs neu und eindeutig sind; andernfalls erzeugt Ihre COM-Komponente Konflikte mit anderen COM-Komponenten.

  7. Fügen Sie ComClass1 das ComClass-Attribut 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 über einen parameterlosen Public Sub New()-Konstruktor verfügen. Andernfalls kann die Klasse nicht ordnungsgemäß registriert werden. 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 beenden Sie die Eingabe mit einer End Class-Anweisung. Klicken Sie im Menü Erstellen auf Projektmappe erstellen. Visual Basic erstellt die Assembly und registriert das COM-Objekt im Betriebssystem.

    Tipp

    Die mit Visual Basic generierten COM-Objekte können nicht von anderen Visual Basic-Anwendungen verwendet werden, da es sich nicht um echte COM-Objekte handelt. Wenn Sie versuchen, Verweise auf solche COM-Objekte hinzuzufügen, tritt ein Fehler auf. Ausführliche Informationen finden Sie unter COM-Interoperabilität in .NET Framework-Anwendungen (Visual Basic).

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Implementieren der Vererbung mit COM-Objekten (Visual Basic)

Problembehandlung bei Interoperabilität (Visual Basic)

Referenz

ComClassAttribute

#Region-Direktive

Weitere Ressourcen

COM-Interop (Visual Basic)

COM-Interoperabilität in .NET Framework-Anwendungen (Visual Basic)