System.Win.ComObj.TComObjectFactory

提供: RAD Studio API Documentation
移動先: 案内検索

System.TObjectTComObjectFactory

Delphi

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

C++

class PASCALIMPLEMENTATION TComObjectFactory : public System::TObject

プロパティ

種類 可視性 ソース ユニット
class public
System.Win.ComObj.pas
System.Win.ComObj.hpp
System.Win.ComObj System.Win.ComObj

説明

TComObjectFactory は,TComObject クラスをインスタンス化するのに使用するクラスファクトリオブジェクトの型です。

TComObjectFactory では,IUknown,IClassFactory,IClassFactory2 の各インターフェースがサポートされています。IClassFactory インターフェースはクラスオブジェクトによって実装されます。これらのクラスオブジェクトは,それぞれがインスタンス化するクラス用のクラス ID(CLSID)に関連付けられています。IClassFactory はそれぞれのオブジェクト定義に実装して,その型のオブジェクトを作成できるようにしなければなりません。IClassFactory2 インターフェースは,ライセンス付与用にサポートを必要とするクラスのためにクラスファクトリにより実装されます。

クラスファクトリは,登録されたクラス ID(CLSID)が指定する COM クラスをインスタンス化します。クラスファクトリオブジェクトは,クラスオブジェクトとその関連付けられたクラスのコードを保持する COM サーバーによって自動的に作成されます。クラスファクトリが作成されると,CLSID がクラスファクトリオブジェクトのコンストラクタへのパラメータで指定されます。この CLSID は,クラスファクトリがインスタンスを作成するオブジェクトの型を示します。

また,Windows API 関数の CoCreateClassObject を直接呼び出せば,クラスファクトリオブジェクトを外部的にインスタンス化できます。関数の CreateComObject または CreateOleObject は,COM クラスをインスタンス化するためにも呼び出せます。このような関数はクラスファクトリを間接的に使ってクラスをインスタンス化します。ただし,CLSID を持つ複数のクラスインスタンスを作成している際は,必要なときにクラスファクトリをインスタンス化し,その IClassFactory インターフェースへのポインタを取得し,そのメソッドを使用する方がより効率的です。

クラスファクトリは,ComClassManager 関数でアクセスしたグローバルクラスマネージャによってサーバーで管理されます。このクラスマネージャは,通常はクラスファクトリを所有する COM サーバーにしたがって,クラスファクトリを操作するためのクラスファクトリリストを管理します。

IUnknown, IClassFactory, IClassFactory2

関連項目