3

COMサーバーでもあり、スタンドアロンとして実行することも、COMクライアントによって自動化することもできるアプリケーションがあります。

COMクラスは次のように宣言されます。

type
  TCommandApp = class(TAutoObject, IConnectionPointContainer, ICommandApp)

また、初期化の部分は次のとおりです。

TAutoObjectFactory.Create(ComServer, TCommandApp, Class_CommandApp, 
                          ciSingleInstance, tmApartment);

のインスタンスを作成しますTCommandAppTCommandApp問題は、によって作成されたのインスタンスをどのように参照するTAutoObjectFactoryかです。(そのメソッドなどを呼び出します)。

4

1 に答える 1

4

COMと同じ方法でインスタンスを作成する場合は、インターフェイスからTCommandApp取得するファクトリのCreateInstanceメソッドを呼び出す必要がありIClassFactoryます。

var
  Factory: IClassFactory;
  App: ICommandApp;

Factory := TAutoObjectFactory.Create(...);
OleCheck(Factory.CreateInstance(nil, ICommandApp, App));

または、コンストラクターを直接呼び出すこともできます。

var
  Factory: TComObjectFactory;
  App: TCommandApp;

Factory := TAutoObjectFactory.Create(...);
App := TCommandApp.CreateFromFactory(Factory, nil);
于 2013-02-06T14:21:21.160 に答える