Exemplarische Vorgehensweise: Erstellen von COM-Objekten in Visual Basic

Aktualisiert: November 2007

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.

Hinweis:

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.

Hinweis:

Je nach den aktiven Einstellungen oder der verwendeten Version können sich die angezeigten Dialogfelder und Menübefehle von den in der Hilfe beschriebenen unterscheiden. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. 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 im 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 in der Liste Vorlagen den Eintrag 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 zur COM-Klasse Code hinzu, z. B. Eigenschaften, Methoden und Ereignisse.

  6. Wählen Sie im Menü Erstellen den Befehl ClassLibrary1 erstellen aus. 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 NeuesProjekt, 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. Um eine GUID zu erhalten, rufen Sie das Dienstprogramm Guidgen.exe auf. Wählen Sie Registrierungsformat aus der Liste der Formate auf, die von der Guidgen-Anwendung bereitgestellt werden. Klicken Sie auf die Schaltfläche Neue GUID, um die GUID zu generieren. Klicken Sie anschließend auf die Schaltfläche Kopieren, um die GUID in die Zwischenablage zu kopieren.

  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"
    
    Hinweis:

    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. Wählen Sie im Menü Erstellen den Befehl Projektmappe erstellen aus. Visual Basic erstellt die Assembly und registriert das COM-Objekt im Betriebssystem.

    Hinweis:

    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.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Implementieren der Vererbung mit COM-Objekten

Fehlerbehandlung bei der Interoperabilität

Referenz

ComClassAttribute-Klasse

#Region-Direktive

Weitere Ressourcen

COM-Interop

COM-Interoperabilität in .NET Framework-Anwendungen