Overzicht: COM-objecten maken met Visual Basic
Wanneer u nieuwe toepassingen of onderdelen maakt, kunt u het beste .NET Framework-assembly's maken. Visual Basic maakt het echter ook eenvoudig om een .NET Framework-onderdeel beschikbaar te maken voor COM. Hiermee kunt u nieuwe onderdelen bieden voor eerdere toepassingssuites waarvoor COM-onderdelen zijn vereist. In dit scenario ziet u hoe u Visual Basic gebruikt om .NET Framework-objecten beschikbaar te maken als COM-objecten, zowel met als zonder de COM-klassesjabloon.
De eenvoudigste manier om COM-objecten beschikbaar te maken, is met behulp van de COM-klassesjabloon. Met deze sjabloon maakt u een nieuwe klasse, configureert u vervolgens uw project voor het genereren van de klasse met een interoperabiliteitslaag als COM-object en registreert u deze bij het besturingssysteem.
Notitie
Hoewel u ook een klasse die is gemaakt in Visual Basic als com-object voor onbeheerde code beschikbaar kunt maken, is het geen echt COM-object en kan deze niet worden gebruikt door Visual Basic. Zie COM-interoperabiliteit in .NET Framework-toepassingen voor meer informatie.
Notitie
Mogelijk worden op uw computer verschillende namen of locaties weergegeven voor sommige elementen van de Visual Studio-gebruikersinterface in de volgende instructies. De Visual Studio-editie die u hebt en de instellingen die u gebruikt, bepalen deze elementen. Zie Personalizing the IDE (Personalizing the IDE) voor meer informatie.
Een COM-object maken met behulp van de COM-klassesjabloon
Open een nieuw Windows-toepassingsproject in het menu Bestand door op Nieuw project te klikken.
Controleer in het dialoogvenster Nieuw project onder het veld Projecttypen of Windows is geselecteerd. Selecteer Klassebibliotheek in de lijst Sjablonen en klik vervolgens op OK. Het nieuwe project wordt weergegeven.
Selecteer Nieuw item toevoegen in het menu Project . Het dialoogvenster Nieuw item toevoegen wordt weergegeven.
Selecteer COM-klasse in de lijst Sjablonen en klik vervolgens op Toevoegen. Visual Basic voegt een nieuwe klasse toe en configureert het nieuwe project voor COM-interoperabiliteit.
Voeg code zoals eigenschappen, methoden en gebeurtenissen toe aan de COM-klasse.
Selecteer Build ClassLibrary1 in het menu Build . Visual Basic bouwt de assembly en registreert het COM-object bij het besturingssysteem.
COM-objecten maken zonder de COM-klassesjabloon
U kunt ook handmatig een COM-klasse maken in plaats van de COM-klassesjabloon te gebruiken. Deze procedure is handig wanneer u vanaf de opdrachtregel werkt of als u meer controle wilt over de manier waarop COM-objecten worden gedefinieerd.
Uw project instellen voor het genereren van een COM-object
Open een nieuw Windows-toepassingsproject in het menu Bestand door op NewProject te klikken.
Controleer in het dialoogvenster Nieuw project onder het veld Projecttypen of Windows is geselecteerd. Selecteer Klassebibliotheek in de lijst Sjablonen en klik vervolgens op OK. Het nieuwe project wordt weergegeven.
Klik in Solution Explorer met de rechtermuisknop op uw project en klik vervolgens op Eigenschappen. De projectontwerper wordt weergegeven.
Klik op het tabblad Compileren .
Schakel het selectievakje Registreren voor COM Interop in.
De code in uw klasse instellen om een COM-object te maken
Dubbelklik in Solution Explorer op Class1.vb om de bijbehorende code weer te geven.
Wijzig de naam van de klasse in
ComClass1
.Voeg de volgende constanten toe aan
ComClass1
. Ze slaan de GUID-constanten (Globally Unique Identifier) op die de COM-objecten moeten hebben.Public Const ClassId As String = "" Public Const InterfaceId As String = "" Public Const EventsId As String = ""
Klik in het menu Extra op Guid maken. Klik in het dialoogvenster GUID maken op Registerindeling en klik vervolgens op Kopiëren. Klik op Afsluiten.
Vervang de lege tekenreeks voor de
ClassId
guid en verwijder de voorloop- en volgaccolades. Als de GUID van Guidgen bijvoorbeeld is"{2C8B0AEE-02C9-486e-B809-C780A11530FE}"
, moet uw code er als volgt uitzien.Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
Herhaal de vorige stappen voor de
InterfaceId
enEventsId
constanten, zoals in het volgende voorbeeld.Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91" Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
Notitie
Zorg ervoor dat de GUID's nieuw en uniek zijn; anders kan uw COM-onderdeel conflicteren met andere COM-onderdelen.
Voeg het
ComClass
kenmerk toe aanComClass1
, waarbij u de GUID's voor de klasse-id, interface-id en gebeurtenis-id opgeeft, zoals in het volgende voorbeeld:<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> Public Class ComClass1
COM-klassen moeten een constructor zonder parameters
Public Sub New()
hebben of de klasse wordt niet correct geregistreerd. Voeg een parameterloze constructor toe aan de klasse:Public Sub New() MyBase.New() End Sub
Voeg eigenschappen, methoden en gebeurtenissen toe aan de klasse en beëindig deze met een
End Class
instructie. Selecteer Build Solution in het menu Build . Visual Basic bouwt de assembly en registreert het COM-object bij het besturingssysteem.Notitie
De COM-objecten die u met Visual Basic genereert, kunnen niet worden gebruikt door andere Visual Basic-toepassingen omdat ze geen echte COM-objecten zijn. Pogingen om verwijzingen naar dergelijke COM-objecten toe te voegen, veroorzaken een fout. Zie COM-interoperabiliteit in .NET Framework-toepassingen voor meer informatie.