我正在寻找可用的原生Word插件的极少数样本,试图找到重建VSTO的Document.OnBeforeClose事件的方法。
目前,我发现IDTExtensibility2
引用了DTE
,DTE
是与Visual Studio扩展相同的基于COM的方法。(so如果我找到一个有效的C ++ - 使用相同类型的钩子编写VS加载项,它将快速解决我的问题。)
这取自2000年的TestAddin2
样本:
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()
所以目前我想知道:
似乎至少SO上的某个人设法写了一个本机代码插件(packaging a COM addin for deployment),所以我真的希望得到帮助。
答案 0 :(得分:1)
下面是一个示例,说明如何使用ATL的IDispEventImpl/BEGIN_SINK_MAP/SINK_ENTRY_EX/END_SINK_MAP
实现COM调度接口的事件处理程序:
http://support.microsoft.com/kb/194179
要为MS Word和Office对象模型生成COM定义,您需要以下文件:
MSADDNDR.TLB
MSO.DLL
MSWORD.OLB
VBE6EXT.OLB
您应该能够在“C:\ Program Files(x86)\ Microsoft Office \”下的某处找到它们。以下导入代码不久前使用Office 2007,您可能需要针对更新的Office版本进行调整:
#import "TypeLib\MSADDNDR.TLB" \
raw_interfaces_only \
no_namespace \
auto_search
#import "TypeLib\MSWORD.OLB" \
raw_interfaces_only \
rename("ExitWindows","MsoExitWindows") \
rename("FindText","MsoFindText") \
rename("DocumentProperties", "MsoDocumentProperties") \
rename("RGB", "MsoRGB") \
auto_search \
exclude("IAccessible", "AddIn", "Adjustments")