Outlook插件:在带有调度指针的NewMail处理程序上

Outlook addin: On NewMail handler with dispatch pointer

本文关键字:指针 NewMail 处理 程序上 调度 插件 Outlook      更新时间:2023-10-16

我正在做outlook插件

我有以下呼叫,当收到新邮件时呼叫,如果用户发送邮件。

void __stdcall OnNewMail();
void __stdcall OnSend(IDispatch * item, bool cancel);

BEGIN_SINK_MAP (CAddin)SINK_ENTRY_INFO (__uuidof(前景::ApplicationEvents)/ dispinterface /0 x0000f002 OnSend,, OnSendInfo)SINK_ENTRY_INFO (__uuidof(前景::ApplicationEvents)/ dispinterface /0 x0000f003 OnNewMail,, OnNewMailInfo)END_SINK_MAP ()

可以正常工作

现在我想要相同的(IDispatch * item)在NewMail通知处理程序的情况下。

如果我这样写:

_ATL_FUNC_INFO OnNewMailInfo = {CC_STDCALL, VT_EMPTY, 0, { VT_DISPATCH | VT_BOOL }};
void __stdcall OnNewMail(IDispatch * item, bool cancel);

我得到IDispatch NULL指针也崩溃一旦它走出OnNewMail功能。

请告诉我哪里错了。

欢迎回复

在我看来,"OnNewMailInfo"结构是不正确的。第三个字段是传递给函数的参数数量(根据签名),第四个字段是VT_…-常量数组。所以应该是

_ATL_FUNC_INFO OnNewMailInfo = {CC_STDCALL, VT_EMPTY, 2, { VT_DISPATCH, VT_BOOL }};
void __stdcall OnNewMail(IDispatch * item, bool cancel);