3

我在 Delphi 2010 中编写了一个小型 COM 服务器,它充当零售应用程序的插件。零售应用程序寻找一个“发现”接口,该接口注册任意数量的附加接口调用TAutoObjectFactory.Create每个接口。这工作得很好——所有插件接口都按设计工作。

但是现在我想从另一个接口调用一个接口的公共方法,这样我就不必重复代码了。看起来很简单,调用ComClassManager.ForEachFactory查找我需要使用的接口的ClassID即可。也得到了它的工作!

但是现在我找到了这个类,我被一个看似微不足道的最后一步难住了:如何使用或转换我找到的类(或类引用?)以实际调用它的一个方法。

在我发送到的“FactoryProc”中ForEachFactory,我假设 ComClass 属性TComObjectFactory是我所追求的,但它是 TClass 类型,它是指向它所指向的实际类对象的类引用(至少我希望我是正确理解这一点)。我对类引用有点模糊,我尝试强制转换或取消引用此属性导致访问冲突或编译器错误。

有什么建议么?

4

1 回答 1

3

您的评论是对的,ComClassManager处理的是类,而不是实例。您需要的是(您的应用程序本地实现)运行对象表(或类似的东西),因此插件实例可以相互交互。

如何实际实现它取决于您真正需要什么,例如在所有正在运行的实例上调用方法,或者仅在特定类的实例上调用。

于 2013-02-20T13:49:04.927 回答