我潜伏在极少数可用的原生 Word 插件样本中,试图找到重建 VSTO 的 Document.OnBeforeClose 事件的方法。
目前,我发现它IDTExtensibility2
有一个对 的引用DTE
,这DTE
与用于 Visual Studio 扩展的基于 COM 的方法相同。(因此,如果我找到一个具有相同钩子的 C++ 编写的 VS 加载项,它会很快解决我的问题。)
这是取自TestAddin2
2000 年代的样本:
BEGIN_COM_MAP(CConnect)
COM_INTERFACE_ENTRY2(IDispatch, IRibbonCallback)
COM_INTERFACE_ENTRY(IConnect)
COM_INTERFACE_ENTRY(_IDTExtensibility2)
COM_INTERFACE_ENTRY(_FormRegionStartup)
COM_INTERFACE_ENTRY(IRibbonExtensibility)
COM_INTERFACE_ENTRY(IRibbonCallback)
END_COM_MAP()
所以目前我想知道:
- 如何获取正确的 ENTRY* 参数以从 Word 中捕获文档级事件?
- 应该实现什么接口来支持它?
- 如何在纯 C++ COM 中正确实现回调函数(在 VSTO 中作为“处理程序”传递给 com 对象的函数)?
- 是否有任何东西可以从现有的 COM 对象生成标题,就像 VS 在显示 COM 对象字段/道具时所做的那样?
似乎 SO 上至少有人设法编写了本机代码插件(打包 COM 插件以进行部署),所以我真的很期待这里的帮助。