我正在創建類似thunderbird和Outlook的默認郵件應用程序,但僅包含一些功能。所以,現在的問題是,只有在Word 2007和Excel 2007中,從fileMenu發送文件 - >發送 - >電子郵件和應用程序在點擊電子郵件後崩潰,但同樣的事情在Powerpoint 2007和一個筆記2007中工作。MAPILogonEx(...)在從MAPILogOn(...)調用時返回NULL
與Office 2007,MapiLogon(...)越來越第一個呼叫,這裏是我的MAPILogOn(...),
// I have used ofstream for the log purpose.
#include <MAPIX.h>
extern "C" ULONG MAPILogon(ULONG_PTR ulUIParam, LPSTR lpszProfileName, LPSTR lpszPassword, FLAGS flFlags, ULONG ulReserved, LPLHANDLE lplhSession)
{
ofstream outfile;
outfile.open("e:\\temp\\MAPILogon.txt");
HRESULT hrs = NULL;
MAPIINIT_0 MAPIINIT = { MAPI_INIT_VERSION, MAPI_NO_COINIT };
hrs = MAPIInitialize(NULL);
lplhSession = nullptr;
if (hrs != S_OK)
{
outfile << "\n MAPI uniititalized";
}
else
{
outfile << "\n MAPI initialized";
LPMAPISESSION FAR spSession = NULL;
outfile << "\n lplhsession - " << spSession;
hrs = MAPILogonEx(NULL, "Outlook", NULL, MAPI_EXTENDED | MAPI_NEW_SESSION, &spSession);
if (hrs == NULL)
{
outfile << "\n MAPI problem while log in." << spSession;
}
else if (hrs == S_OK)
{
outfile << "\n MAPI log in successful.";
return SUCCESS_SUCCESS;
}
outfile << "\n Last Error - " << GetLastError();
}
return MAPI_E_FAILURE;
}
在這裏,我能夠成功地初始化MAPI,但初始化MAPILogonEx(.. )返回null,那麼這裏還有其他需要的東西嗎?
GetLastError()給出0.「Outlook」是默認配置文件。
我查看了所有的教程stackoverflow和微軟,但無法獲得解決方案。
是的你是正確的,我測試了這個東西,並且NULL和S_OK都是一樣的。 –
看看我寫在這裏的解決方案。但事情是辦公室2007年的應用程序調用MAPILonOn(...),我沒有做任何事情,仍然代碼是好的解決方案,所以爲什麼Office 2007應用程序調用MAPILogOn(...),而其他Office版本應用程序直接調用MAPISendMail(...)或MAPISendMailW(...) –
MAPILonOn是簡單的MAPI,你爲什麼需要它? –