Windows Address Book (WAB)
-
Wie kann benutzen "Windows Address Book" in MS Visual C++?
Mir interessiert Benutzung des Handy Nummers.
Ich habe gefunden Benutzung des e-mails:// Load email addresses into the vector int CWinAddrBook::LoadEmails(void) { HRESULT hr = E_FAIL; if (ssWABOpen==NULL) return 1; //ssWABOpen cannot be NULL { ULONG lpcbEntryID; ENTRYID* lpEntryID; hr = lpAddrBook->GetPAB(&lpcbEntryID, &lpEntryID); if (hr!=S_OK) return 10; //error opening the darn PAB //Declare variables for MAPI and specific access to the PAB ULONG ulFlags = MAPI_BEST_ACCESS, ulObjType = NULL; LPUNKNOWN lpIUnknown = NULL; hr = lpAddrBook->OpenEntry(lpcbEntryID, lpEntryID, NULL, ulFlags, &ulObjType, &lpIUnknown); ulFlags = NULL; //We are using it again :) if (ulObjType==MAPI_ABCONT) //See if an address book container was passed which we are looking for { IABContainer* lpABContainer = static_cast<IABContainer*>(lpIUnknown); //cast the IUnknown pointer returned from previous function to what we need LPMAPITABLE lpMAPItbl = NULL; hr = lpABContainer->GetContentsTable(ulFlags, &lpMAPItbl); ASSERT(lpMAPItbl); ULONG ulRows; //Number of rows in the MAPI table (Addresses) hr = lpMAPItbl->GetRowCount(0, &ulRows); if (hr!=S_OK) return 11; //Return 11 to tell them we where unable to get the row count SRowSet* lpRowSet; hr = lpMAPItbl->QueryRows( //Return all the rows found in the address book ulRows, 0, &lpRowSet); //Grow variable AddrMemBook.resize(lpRowSet->cRows); //char Match[200]; strset(Match, 0); for (ULONG x = 0; x < lpRowSet->cRows; x++) { //Loop through all the rows and add it to our address book //vector variable EMAILS thisAddr; SRow* lpRow = &lpRowSet->aRow[x]; //Get this specific row for (ULONG y = 0; y < lpRow->lpProps; y++) { } for (ULONG y = 0; y < lpRow->cValues; y++) { //Loop through the fields in the address book and assign //to our variable and put it in the address book variable SPropValue* lPropVal = &lpRow->lpProps[y]; switch (lPropVal->ulPropTag) { case PR_DISPLAY_NAME_A: thisAddr.DisplayName = lPropVal->Value.lpszA; //strcpy(thisAddr->DisplayName, lPropVal->Value.lpszA); break; case PR_EMAIL_ADDRESS_A: thisAddr.EmailAddr = lPropVal->Value.lpszA; if (strchr(thisAddr.EmailAddr.c_str(), '@')==NULL) //replace with empty string thisAddr.EmailAddr='\0'; //strcpy(thisAddr->EmailAddr, lPropVal->Value.lpszA); break; case PR_NICKNAME_A: thisAddr.NickName = lPropVal->Value.lpszA; //strcpy(thisAddr->NickName, lPropVal->Value.lpszA); break; default: break; } }//End of cycling through fields //Add the information to the vector variable if (!thisAddr.EmailAddr.empty()) AddrMemBook.push_back(thisAddr); lpWABObject->FreeBuffer(lpRow); }//End of cycling through rows lpWABObject->FreeBuffer(lpRowSet); } } return 0; }