System.Win.ComObj.TComObjectFactory

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

System.TObjectTComObjectFactory

Delphi

TComObjectFactory = class(TObject, IUnknown, IClassFactory, IClassFactory2)

C++

class PASCALIMPLEMENTATION TComObjectFactory : public System::TObject

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
class public
System.Win.ComObj.pas
System.Win.ComObj.hpp
System.Win.ComObj System.Win.ComObj

Beschreibung

TComObjectFactory ist der Typ eines Klassengenerator-Objekts, mit dessen Hilfe eine TComObject-Klasse instantiiert wird.

TComObjectFactory unterstützt die Schnittstellen IUnknown, IClassFactory und IClassFactory2. Die Schnittstelle IClassFactory wird von Klassenobjekten implementiert, die ihre Klassen über einen Klassenbezeichner (CLSID) instantiieren. IClassFactory muss für jede Objektdefinition implementiert werden, damit Objekte dieses Typs erstellt werden können. Die Schnittstelle IClassFactory2 wird von Klassengeneratoren implementiert, die Lizenzierungsunterstützung benötigen.

Klassengeneratoren instantiieren die COM-Klassen, die über einen registrierten Klassenbezeichner (CLSID) angegeben sind. Die Erstellung der Klassengenerator-Objekte erfolgt automatisch durch die COM-Server, welche den Quelltext für die Klassenobjekte und deren zugeordnete Klassen enthalten. Bei der Erstellung eines Klassengenerators wird die CLSID in einem Parameter für den Konstruktor des Klassengenerator-Objekts angegeben. Diese CLSID bezeichnet den Typ des Objekts, für das der Klassengenerator Instanzen erzeugt.

Klassengenerator-Objekte können auch extern durch einen direkten Aufruf der Windows-API-Funktion CoCreateClassObject instantiiert werden. Sie können zur Instantiierung einer COM-Klasse aber auch die Funktionen CreateComObject bzw. CreateOleObject verwenden, in denen die entsprechenden Windows-API-Funktionen gekapselt sind. Diese Funktionen verwenden Klassengeneratoren indirekt zur Instantiierung der Klassen. Wenn mehrere Instanzen einer Klasse mit einer CLSID erzeugt werden müssen, ist es effizienter, einen Klassengenerator zu instantiieren, einen Zeiger auf dessen IClassFactory-Schnittstelle abzurufen und seine Methoden einzusetzen.

Die Verwaltung der Klassengeneratoren auf dem Server erfolgt durch einen globalen Klassen-Manager, auf den über die ComClassManager-Funktion zugegriffen wird. Dieser Klassenmanager verwaltet eine Liste der Generatoren. Über die Liste können die Klassengeneratoren – entsprechend den Richtlinien des übergeordneten COM-Servers – manipuliert werden.

IUnknown, IClassFactory, IClassFactory2

Siehe auch