如何在没有MFC或ATL的情况下在C ++中找到Office传出COM接口的IID?

时间:2010-10-11 13:23:20

标签: c++ com ms-office

我正在编写一个需要处理Office触发的事件的应用程序 - 比如“打印前”或“新文件”。

从各种文章和示例中我了解到我应该使用IConnectionPoint接口。 我使用QueryInterface得到了Word.Application的ConnectionPointContainer 现在我想运行FindConnectionPoint,但我必须给它我正在寻找的接口的IID,我不知道在哪里找到它! 我想过运行EnumConnectionPoints,但这会给我所有的连接点,我不知道如何识别我需要的那些。

我如何知道IID?

1 个答案:

答案 0 :(得分:0)

有两种可能的情况:

  • 您可以在某处找到该事件接口的描述(例如,描述该接口的.h文件)
  • 你得到一个类型库 - 要么在一个单独的.tlb文件中,要么作为资源嵌入到COM服务器.dll文件中,并使用OleView读取它,或者用Visual C ++中的#import指令导入它并获取它转换为带有IID命名常量的C ++接口定义。

您也可以使用IConnectionPointContainer::EnumConnectionPoints(),然后使用IConnectionPoint::GetConnectionInterface(),但如果您首先不知道接口定义,那么获取IID是没有价值的,上面的其中一个仍然会需要。