Den COM-Objekt-Experten verwenden
Nach oben zu Einfache COM-Server erstellen - Index
Der COM-Objekt-Experte führt folgende Aufgaben durch:
- Erstellen einer neuen Unit.
- Definition einer von TCOMObject abgeleiteten Klasse und Einrichten des Klassengenerator-Konstruktors Weitere Informationen zu den Basisklassen finden Sie unter Von Experten generierter Code.
- Hinzufügen einer Typbibliothek zu Ihrem Projekt und Einfügen des Objekts und seines Interface in die Typbibliothek.
- Öffnen der Typbibliothek im Typbibliothekseditor.
Vor dem Erstellen eines COM-Objekts müssen Sie das Projekt für eine Anwendung erstellen oder öffnen, welche die zu implementierenden Funktionen enthält. Je nach Bedarf, kann das Projekt entweder eine Anwendung oder eine ActiveX-Bibliothek sein.
So rufen Sie den COM-Objekt-Experten auf:
Geben Sie dann im Experten folgende Informationen an:
- Name der CoClass: Dies ist der Name des Objekts, der den Clients angezeigt wird. Die zur Implementierung Ihres Objekt erstellte Klasse trägt diesen Namen mit dem Präfix "T". Wenn Sie kein vorhandenes Interface implementieren, weist der Experte Ihrer CoClass ein Standard-Interface mit diesem Namen und dem Präfix "I" zu.
- Instantiierung: Wenn Sie keinen In-Process-Server erstellen, müssen Sie angeben, wie COM die Anwendung startet, die Ihr COM-Objekt enthält. Falls Ihre Anwendung mehr als ein COM-Objekt implementiert, sollten Sie für alle Objekte dieselbe Instantiierung festlegen.
- Threading-Modell: In der Regel werden Client-Anfragen für Ihr Objekt auf unterschiedlichen Ausführungs-Threads transportiert. Sie können angeben, wie COM diese Threads bei Aufruf Ihres Objekts serialisiert. Das gewählte Threading-Modell legt fest, wie das Objekt registriert wird. Sie sind für die Bereitstellung der Threading-Unterstützung verantwortlich, das vom gewählten Modell vorausgesetzt wird. Weitere Informationen zur Bereitstellung von Thread-Unterstützung für Ihre Anwendung finden Sie in Multithread-Anwendungen entwickeln.
- Interface: Der Experte weist Ihrem Objekt ein Standard-Interface zu, das von IUnknown abgeleitet wird. Das Interface erhält standardmäßig denselben Namen wie die CoClass, dem ein “I” für Interface vorangestellt ist. Nach Beenden des Experten können Sie mit dem Typbibliothekseditor diesem Interface Eigenschaften und Methoden hinzufügen. Sie können jedoch auch ein vordefiniertes Interface angeben, das von Ihrem Objekt implementiert werden soll. Klicken Sie im COM-Objekt-Experten auf die Schaltfläche [...], um den Experten für die Interface-Auswahl aufzurufen, in dem Sie ein beliebiges duales oder benutzerdefiniertes Interface auswählen können, das in einer auf Ihrem System registrierten Typbibliothek definiert ist. Das gewählte Interface wird zum Standard-Interface für Ihre neue CoClass. Der Experte fügt alle Methoden dieses Interface der generierten Implementierungsklasse hinzu, damit Sie nur die Grundstrukturen der Methoden in der Implementierungs-Unit ausfüllen müssen. Beachten Sie, dass bei Auswahl eines vorhandenen Interface dieses nicht der Typbibliothek Ihres Projekts hinzugefügt wird. Daraus ergibt sich bei der Weitergabe des Objekts, dass Sie auch die Typbibliothek weitergeben müssen, die das Interface definiert.
- Typbibliothek einschließen: Sie können auswählen, ob Sie eine Typbibliothek für Ihr Objekt verwenden möchten. Dies wird aus zwei Gründen empfohlen: Zum einen können Sie den Typbibliothekseditor zur Definition von Interfaces verwenden und dadurch einen Großteil der Implementierung aktualisieren, zum anderen erhalten Sie eine einfache Möglichkeit, Informationen über Ihr Objekt und seine Instanzen abzurufen. Wenn sie ein vorhandenes Interface implementieren, setzt Delphi für Ihr Projekt die Verwendung einer Typbibliothek voraus. Dies ist die einzige Möglichkeit, um Zugriff auf die ursprüngliche Interface-Deklaration zu erhalten.
- Interface als Ole-Automatisierung: Wenn Sie sich für die Erstellung einer Typbibliothek entschieden haben und sich auf automatisierungskompatible Typen beschränken wollen, können Sie das Marshaling COM überlassen (gilt immer dann, wenn Sie keinen In-Process-Server generieren). Indem Sie das Interface Ihres Objekts in der Typbibliothek als Ole-Automatisierung markieren, ermöglichen Sie COM die automatische Einrichtung von Proxies und Stubs und die Verarbeitung von Parametern über Prozessgrenzen hinweg. Sie können nur angeben, ob Ihre Interface automatisierungskompatibel ist, wenn Sie ein neues Interface generieren. Bei Auswahl eines vorhandenen Interface sind seine Attribute bereits in seiner Typbibliothek angegeben. Falls das Interface des Objekts nicht als Ole-Automatisierung markiert ist, müssen Sie entweder einen In-Process-Server oder Ihren eigenen Marshaling-Code erstellen.
Wahlweise können Sie eine Beschreibung Ihres COM-Objekts hinzufügen. Diese Beschreibung wird in der Typbibliothek für Ihr Objekt angezeigt (sofern Sie eine derartige Bibliothek erstellen).