我使用如下代码在outlook地址簿中添加联系人信息:#include <mapi.h>
#include <mapix.h>void AddContact()
{
         HRESULT hr; LPMAPISESSION lppSession = NULL;
LPADRBOOK lppAdrBook = NULL; ULONG ulEntryID = 0;
LPENTRYID lpEntryID = NULL;
LPABCONT lpContainer = NULL; ULONG ulObjType = 0;
LPUNKNOWN lpUnk = NULL; MAPIInitialize(NULL);

hr = MAPILogonEx(NULL, NULL, NULL, 
MAPI_LOGON_UI |MAPI_NO_MAIL | MAPI_EXTENDED, &lppSession); ASSERT(hr == S_OK); hr = lppSession->OpenAddressBook(NULL, 0, AB_NO_DIALOG, &lppAdrBook);

ASSERT(hr == S_OK); hr = lppAdrBook->GetPAB(&ulEntryID, &lpEntryID);
//hr = lppAdrBook->GetDefaultDir(&ulEntryID, &lpEntryID); ASSERT(hr == S_OK); hr = lppAdrBook->OpenEntry(ulEntryID, lpEntryID, NULL, 
MAPI_MODIFY, &ulObjType, &lpUnk); lpContainer = (LPABCONT)lpUnk; //处理属性数据
char szDisplayName[128] = "test";
char szGivenName[128] = "test";
char szAddrType[] = "SMTP";
char szMailAddr[128] = "[email protected]"; SPropValue arrProp[4];
memset(arrProp, 0, sizeof(SPropValue)*4); arrProp[0].ulPropTag = PR_ADDRTYPE;
arrProp[0].Value.lpszA = szAddrType;
arrProp[1].ulPropTag = PR_DISPLAY_NAME;
arrProp[1].Value.lpszA = szDisplayName;
arrProp[2].ulPropTag = PR_EMAIL_ADDRESS;
arrProp[2].Value.lpszA = szMailAddr;
arrProp[3].ulPropTag = PR_SURNAME;
arrProp[3].Value.lpszA = szGivenName; //地址簿操作
LPMAPIPROP lpProp = NULL;
hr = lpContainer->CreateEntry(0, NULL, 0, &lpProp); if(hr == S_OK)
{
hr = lpProp->SetProps(4, arrProp, NULL);
ASSERT(hr == S_OK);
hr = lpProp->SaveChanges(0);
lpProp->Release();
}
else
{
LPMAPIERROR lpError = NULL;
lpContainer->GetLastError(hr, 0, &lpError); if(lpError != NULL)
{
string strErr;
strErr = "Error:";
if(lpError->lpszError != NULL)
strErr += lpError->lpszError;

strErr += "\r\nContent:";
if(lpError->lpszComponent != NULL)
strErr += lpError->lpszComponent;

(lpError);

MessageBox(strErr.c_str(), "Add Error",   
                                              MB_OK|MB_ICONINFORMATION);
}
} lpContainer->Release(); MAPIFreeBuffer(lpEntryID);
lppAdrBook->Release(); lppSession->Logoff(NULL, 0, 0);
lppSession->Release();
}
此代码在outlook2000中运行没有问题,但是outlook xp(outlook2002)以及outlook2003中运行,不能成功,最后返回的错误信息是“请使用联系人模块创建该条目”有谁能帮我看看,这是什么原因?????