1

我已经实现了一个 windows 桌带(使用 windows SDK 示例)并且需要一种与之通信的方式(一个调用以启动 IPC 与另一个应用程序,IPC 已经在工作)。

我的 COM 经验非常有限,但根据我所见,我认为应该可以创建一个新的 COM 接口,在桌带对象(我可以通过 IBandSite 访问)中实现它,为我的调用 QueryInterface()自己的接口就可以了,然后用它直接调用到桌带。

我已经尝试过了,但很快就遇到了问题(主要原因是:我不知道我大部分时间实际上在做什么......)

所以,我的问题是:这是一种可行的方法吗?如果可行的话,有人可以给我一个关于如何进行的大纲(或者指出一些可能有用的资源 - 没有阅读 COM 书籍,这将是我的最后一种方法) . 如果不是,是否会想到替代方案?

感谢您的时间和最良好的祝愿,

雷内。

4

1 回答 1

0

这是您的路径:您将一个新接口添加到 .idl 文件中,并且如果您在 .idl 文件中有一个与您的 COM 对象相对应的 co-class,您将在 co-class 定义中列出该新接口。然后编译 .idl,这会得到一个 .h 文件和一个带有标识符的 .c 文件 - C++ IID 和 C++ 接口定义。

然后你从 C++ 接口继承你的 COM 对象 C++ 类并实现它的所有方法。如果出于某种原因您不能或不想实现某个方法,则必须E_NOTIMPL从该方法实现中返回。

最后一件非常重要的事情:您必须更改QueryInterface()COM 对象类中的行为。如果您使用 ATL,您必须在 COM 映射中添加一个条目。如果您不使用 ATL 更改您QueryInterface()- 请参阅此问题以了解如何QueryInterface()在实现多个 COM 接口的情况下实现。

于 2011-07-13T09:08:16.583 回答