Re[4]: Outlook Адресная книга
От: sovmaster  
Дата: 23.09.04 20:05
Оценка:
Ура I did it. Вот кусочек:
hr = pAddressBook->GetPAB(& cbEID, &lpEID);
if(FAILED(hr)){
::MessageBox(hparent, _T("MAPIGetPab() failure."), _T("mapi"), MB_OK |MB_ICONERROR);
return FALSE; }


ULONG ulObjType = 0;
LPABCONT lpContainer = NULL;
hr = pAddressBook->OpenEntry(cbEID,
(LPENTRYID)lpEID,
NULL,
0 ,
&ulObjType,
(LPUNKNOWN *)&lpContainer);

LPMAPIPROP FAR lppMAPIPropEntry = NULL;
LPCIID lpInterface = NULL;
ULONG FAR lpulObjType = 0;
LPUNKNOWN FAR lppUnk = NULL;
hr = lpContainer->CreateEntry(cbEID, lpEID, CREATE_CHECK_DUP_LOOSE ,&lppMAPIPropEntry);
hr = lpContainer->OpenEntry(cbEID,lpEID,lpInterface,MAPI_BEST_ACCESS ,&lpulObjType,&lppUnk);

SPropValue spropv[3];
LPSTR addtype = "SMTP";
LPSTR dispname = "XXX";
LPSTR email = "fff@ff.ru";
ZeroMemory(&spropv,sizeof(spropv));
spropv[0].ulPropTag = PR_ADDRTYPE;
spropv[0].Value.lpszA = addtype;
spropv[1].ulPropTag = PR_DISPLAY_NAME;
spropv[1].Value.lpszA = dispname;
spropv[2].ulPropTag = PR_EMAIL_ADDRESS;
spropv[2].Value.lpszA = email;
LPSPropProblemArray FAR lppProblems = NULL;
//hr = lpContainer->SetProps(3,spropv,&lppProblems );-если использовать эту функцию, то зменится название источника адресов в данном случае на ХХХ
hr = lppMAPIPropEntry->SetProps(3,spropv,&lppProblems );
hr = lpContainer->SaveChanges(0);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.