我是一些ATL代碼,使用智能COM指針迭代通過MS Outlook聯繫人,並在一些PC上,我得到COM錯誤0x80004003('無效的指針')爲每聯繫。相同的代碼在其他PC上運行良好。代碼如下所示:COM錯誤0x80004003(無效指針)訪問MS Outlook聯繫人
_ApplicationPtr ptr;
ptr.CreateInstance(CLSID_Application);
_NameSpacePtr ns = ptr->GetNamespace(_T("MAPI"));
MAPIFolderPtr folder = ns->GetDefaultFolder(olFolderContacts);
_ItemsPtr items = folder->Items;
const long count = items->GetCount();
for (long i = 1; i <= count; i++)
{
try
{
_ContactItemPtr contactitem = items->Item(i);
// The following line throws a 0x80004003 exception on some machines
ATLTRACE(_T("\tContact name: %s\n"), static_cast<LPCTSTR>(contactitem->FullName));
}
catch (const _com_error& e)
{
ATLTRACE(_T("%s\n"), e.ErrorMessage());
}
}
我想知道是否有其他應用程序/加載項可能導致此問題?任何幫助將受到歡迎。
一個可能的檢查。 contactitem是否爲空?我不會這麼想,因爲你提前檢查計數,但值得一試。 – 2009-05-22 06:40:23