c ++ - uddragskontakter og distributionslister (grupper) fra wab (mapi)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg ser en måde at udpakke alle kontakter og distributionsliste (med relaterede kontakter) fra en WAB (Windows Adressebog).


Jeg skal gøre det, fordi jeg har brug for at importere adressebøger med distributionslister/grupper i rundeboks.


Efter nogle undersøgelser har jeg grundlagt et C ++ projekt på Code Project (http://www.codeproject.com/Articles/3407/Accessing-the-Windows-Address-Book), men det understøtter kun kontakter. [2]]]


Kigger rundt på MSDN Jeg har grundlagt, at OpenAdmin-metoden i iAddrBook i den tredje parameter skal understøtte grænsefladen for at åbne iDistList i mit tilfælde, men jeg kan ikke finde nogen steder grænseflade id.


Jeg søgte nogle dokumentation abount WAB fil struktur, men intet.


Nogen forslag?

Bedste reference


Her er en vej, jeg plejede at gennemføre dette:



  1. Jeg bruger WABOpen metode fra wab32 dll for at få LPADRBOOK lpAddr;

  2. Jeg indstiller PAB mappe lpAddr: call lpAddr-> GetPAB (), OpenEntry for at få container og derefter GetContentsTable på container for at få LPMAPITABLE lpTable.

  3. For at få tabelelementantal, brug GetRowCount på lpTable

  4. For at kontrollere, om den angivne tabelrække er en distributionsliste, skal du bruge QueryRows. Dette skal returnere MAPI\_DISTLIST eller MAPI\_MAILUSER.

  5. Hvis dette er en MAPI\_DISTLIST række, skal du bruge PR\_ENTRYID til at ringe til lpAdrBook-> OpenEntry (). Dette skal returnere IABContainer-beholderen, som du kalder GetContentsTable for at få tabel med indhold på denne distributionsliste.



den sidste OpenEntry ser ud som følger, jeg indstiller ikke tredje parameter hvor som helst:


  // Now emails will be loaded.
  ULONG ulObjType;
  IUnknown* lpUnk;
  hr = lpAdrBook->OpenEntry(DistEntryId.size, (LPENTRYID)DistEntryId.ab, NULL, 0,   &ulObjType, &lpUnk );
  if (FAILED(hr)) {
   assert(false); return hr;
  }