Last Updated on 2. Juni 2016 by Thomas J. Fehr
COM-Komponenten können sowohl in Form von Laufzeitmodulen (DLL’s) als auch als ausführbare Programme implementiert werden. Damit die Funktionen der Komponente für den COM-Client sichtbar sind, müssen folgende Punkte befolgt werden:
- Die Klasse muss „public“ sein
- Properties, Methoden und Events müssen „public“ sein
- Properties und Methoden müssen im Klassen-Interface definiert sein
- Events müssen im Event-Interface definiert sein
Erstellen:
- Zuerst muss das COM-Interface definiert werden (Definition der Schnittstelle)
- Als zweiter Schritt muss die Klasse implementiert werden. Die Klasse muss den Namespace „InteropServices“ importieren (using System.Runtime.InteropServices;)
- In den Projekteinstellungen unter „Erstellen“ muss die Option „Für COM-Interop registrieren“ sowie unter „Anwendung->Assemblyinformationen“ die Option „Assembly COM-sichtbar machen“ aktiviert werden
- Am Schluss muss das Assembly noch signiert werden. Dies kann in den Einstellungen unter „Signierung“ gemacht werden. Dazu wird eine neue Schlüsseldatei erstellt
COM-Komponente registrieren:
Um die COM-Komponente auf einem anderen Gerät zu verwenden muss diese zuerst registriert werden. Dazu wird das Programm „RegAsm.exe“ verwendet.
RegAsm.exe sCOMDemo.dll /codebase /tlb:sCOMDemo.tlb
COM-Komponente deregistrieren:
Bevor eine neue Version installiert wird, sollte die alte Version unregistriert werden.
RegAsm.exe sCOMDemo.dll /unregister
Beispiel Code:
Das Interface:
namespace sCOMDemo
{
public interface IsCom
{
string helloWorld();
}
}
Die Klasse:
using System.Runtime.InteropServices;
namespace sCOMDemo
{
public class sCom:IsCom
{
public string helloWorld()
{
return "hello world!";
}
}
}
Verwendung der COM-Komponente unter VBScript:
Dim objDemo: set objDemo = createObject("sCOMDemo.sCom")
wscript.echo objDemo.HelloWorld()
Component Object Model (COM)
COM Interop Part 1: C# Client Tutorial
System.Runtime.InteropServices Namespace
How to: Create COM Wrappers
How to: Raise Events Handled by a COM Sink
Creating a COM Visible C# Component
Assembly Registration-Tool (Regasm.exe)
Wikipedia: COM