3

我们有一个应用程序,它也是一个 COM 服务器,可以独立运行或由 COM 客户端自动运行。

COM 类的声明方式如下:

type
  TCommandApp = class(TAutoObject, IConnectionPointContainer, ICommandApp)

初始化部分如下:

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

它创建了一个TCommandApp. 问题是如何引用TCommandAppcreated by的实例TAutoObjectFactory?(调用它的方法等)。

4

1 回答 1

4

如果你想像TCommandAppCOM 一样创建实例,那么你应该调用工厂的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 回答