我是一些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