C++ Namespace.GetItemFromId异常

C++ Namespace.GetItemFromId异常,c++,outlook,C++,Outlook,当我尝试处理传入电子邮件时(whithinNewMailExmethod),如果调用GetItemFromId方法(访问冲突),我会遇到一个异常。Namespace.GetItemFromId方法不需要storeId作为第二个参数吗?如果我对引发事件的收件箱不感兴趣,我应该提供什么值作为店铺Id。换句话说,我只想检索有关收到的电子邮件的信息,而不管它属于哪个帐户(收件箱) CMailItem m_mailItem = NULL; CApplication l_application; l_app

当我尝试处理传入电子邮件时(whithin
NewMailEx
method),如果调用
GetItemFromId
方法(访问冲突),我会遇到一个异常。
Namespace.GetItemFromId
方法不需要storeId作为第二个参数吗?如果我对引发事件的收件箱不感兴趣,我应该提供什么值作为店铺Id。换句话说,我只想检索有关收到的电子邮件的信息,而不管它属于哪个帐户(收件箱)

CMailItem m_mailItem = NULL;
CApplication l_application;
l_application.CreateDispatch("Outlook.Application");
CNameSpace l_namespace = l_application.GetNamespace(_T("MAPI"));
CString ItemId((pDispParams->rgvarg)->bstrVal);
m_mailItem = l_namespace.GetItemFromID(ItemId, /*whatIdToProvide*/??);
我试图传递一个emty值,但没有成功

下面是GetItemFromId定义(自动生成)


对于所有可选参数,您需要传递一个类型为VT_ERROR的变量,其值为DISP_E_PARAMNOTFOUND。

感谢您的回答@Dmitry,现在抛出的异常更多。现在,我如何检查接收到的项目是否为mailItem?可以显式地为IMailItem接口查询interface()。或者使用IDIspatch::GetIDsOfNames/Invoke读取类属性。
LPDISPATCH GetItemFromID(LPCTSTR EntryIDItem, const VARIANT& EntryIDStore)  
{   
        LPDISPATCH result;
    static BYTE parms[] = VTS_BSTR VTS_VARIANT;
    InvokeHelper(0x2109, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms,EntryIDItem, &EntryIDStore);
    return result;
}