Ich bin ein ATL-Code, der Smart-COM-Zeiger verwendet, um MS Outlook-Kontakte zu durchlaufen, und auf einigen PCs bekomme ich einen COM-Fehler 0x80004003 ('ungültiger Zeiger') Kontakt. Derselbe Code funktioniert auch auf anderen PCs. Der Code sieht so aus:COM-Fehler 0x80004003 (ungültiger Zeiger) Zugriff MS Outlook-Kontakte
_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());
}
}
Ich frage mich, ob andere Anwendungen/Add-Ins dies verursachen könnten? Jede Hilfe wäre willkommen.
Eine mögliche Überprüfung. Ist contactiem immer null? Ich würde nicht denken, weil Sie im Voraus die Zählung überprüfen, aber es ist einen Versuch wert. –