最近在学习office插件的开发,遇到一个问题,添加SINK_ENTRY_INFO事件响应时,不知道如何获得dispid,在网上查了一下,在msdn上找到这么一个答案:
“Extracts from the IDL definition (as described in MSOUTL9.olb viewed through OLE/COM object Viewer)”
好不容易弄懂了这个答案的步骤,跟大家分享一下:
1. 找到你的OleView.Exe工具,一般位于C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin这个目录下,如果没找到,可在网上下一个。
2. 找到你的olb库文件,在这里我的是MSOUTL.OLB
3. 打开OleView.Exe工具,并用工具打开OLB文件,如下图
4. 找到你要的事件的dispid,比如这里我要找NewInspector事件的dispid,如下图:
5. 也就是说,我需要的id是0x0f001,所以我的消息映射是这样写的:
SINK_ENTRY_INFO(1, __uuidof(Outlook::InspectorsEvents), 0xf001/*NewInspector*/, OnNewInspector, &ItemsInfo)
希望可以帮助到有用到这些东西的人。