Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
Delphi 2009 Professional
|
Re: WAB Dateieninhalt lesen
4. Jul 2009, 20:48
So nach einer langen Suche hab ich es gefunden...
Ich schreib es mal als Antwort hier rein...Den Code hatte ich aus dem C++ Code einer Seite zu Pascal übersetzt..weis aber die Seite net mehr...
Delphi-Quellcode:
var AdressBook : IAddrBook;
WABObject : IWABObject;
lpcbEntryID : ULONG;
lpEntryID : PENTRYID;
ulFlags,ulObjType : ULONG;
lpIUnknown : IInterface;
lpABContainer : IABContainer;
lpMAPItbl : IMAPITABLE;
ulRows : ULONG;
lpRowSet : PSRowSet;
x1,y1 : ULONG;
lpRow : PSRow;
lPropVal : SPropValue;
begin
If WABOpen(AdressBook,WABObject,nil,0) = S_OK then
begin
If AdressBook.GetPAB(lpcbEntryID, lpEntryID) = S_OK then
begin
ulFlags := MAPI_BEST_ACCESS;
ulObjType := 0;
If AdressBook.OpenEntry(lpcbEntryID,lpEntryID,nil,ulFlags,ulObjType,lpIUnknown) = S_OK then
begin
ulFlags := 0;
if ulObjType = MAPI_ABCONT then
begin
lpABContainer := IABContainer(lpIUnknown);
lpABContainer.GetContentsTable(ulFlags, lpMAPItbl);
If lpMAPItbl.GetRowCount(0, ulRows)=S_OK then
begin
lpMAPItbl.QueryRows(ulRows,0,lpRowSet);
for x1 := 0 to lpRowSet.cRows-1 do
begin
lpRow := @lpRowSet.aRow[x1];
for y1 := 0 to lpRow.cValues do
begin
lPropVal := lpRow.lpProps[y1];
case lPropVal.ulPropTag of
PR_DISPLAY_NAME_A:
begin
lPropVal.Value.lpszA //Das ist die Eigenschaft als AnsiString (kann auch an eine Stringvariable übergeben werden)
end;
PR_EMAIL_ADDRESS_A :
begin
lPropVal.Value.lpszA //Das ist die Eigenschaft als AnsiString (kann auch an eine Stringvariable übergeben werden)
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
Die Datei dafür gibt es hier
Nickel "Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
|
|
Zitat
|