Referred from
http://www.vbcity.com/forums/topic.asp?tid=46944&highlight=read|wab
The path of the windows address book
WAB) File Used by Outlook Express CAN Be Found in The Registry at: HKEY_CURRENT_USER / SOFTWARE / Microsoft /
WAB /
WAB4 /
WAB file name.
Here's What I'VE Managed To Figure Out About The
WAB File Format, Looking at it with a hex editor (first byte of the file is byte zero).
Byte #:
32-35 ($ 20- $ 23) - Location (Address) In The File of The Start of The Table Tells Where The Information for Each Contact Is Located (I'll REFER TO IT As The Contact Data Table).
36 ($ 24) - Number of Entries In The Contact Data Table.
48-51 ($ 30- $ 33) - Location In The File of The List of Display Names for the Persons (Contacts) in The Address Book.
52 ($ 34) - Number of Display Names in The File
64-67 ($ 40- $ 43) - Location In The File of the List of last names for the contacts.
68 ($ 44) - Number of Last Names in the file.
80-83 ($ 50- $ 53) - Location In The File of The List of First Names for the Contacts.
84 ($ 54) - NUMBER OF FIRST NAMES in The File.
96-99 ($ 60- $ 63) - Location In The File of the List of e-mail addresses.
100 ($ 64) - Number of e-mail addresses in the file.
In You're Trying To
Read the file in binary model using vb, you'll ued to add one to each of the value, since vb considers the first byte of a file to be byte one, not byte zero.
Format of the Contact Data Table (location as specified ":
Each entry in this table occupies 8 bytes. The first four bytes of each entry are what we'll call the Contact Index, a value that uniqely identifies each contact in the address book. The 5th through 8th bytes are the location (address) in the file where the Contact Data Record (Home Address, Home Phone, Work Phone, etc.) can be found. The exact format of the Contact Data Record is not something I've figured out yet.Format of the other lists above (Display Name, Last Name, First Name, And E-mail Address:
Each entry in one of these lists occupies 68 bytes. The bytes are stored as Unicode, meaning there are two bytes for each character, with the upper byte being zero (at least in English language versions of Windows). By
reading every other byte, you can get the ASCII values that represent each character in an entry in the list. When you come to a byte pair where the lower order byte is zero, you've reached the end of the text for that entry. The 65th to 68th bytes of each entry are the Contact Index. By matching up Contact Index values between lists, you can tell which entry in one list goes with an entry in another (ie, which Display Name belongs with which E-Mail Address) .................... \
Recent version of Outlook Express Allow You to Store Multiple Address Books (or The Address Book for Multiple Outlook Express Identities) in One
wab file. I have not yet figured out how to separate the data by identity. Using the information above, you'll end up getting the data for every contact that exists in the file, regardless of what address book or identity it belongs to .I Have a vb6 project (mapimail) That Uses what I've found out about the u
WAB File To
Read The Display Names and E-mail Addresses for Each Contact. it Also Uses The Microsoft Mapi Controls (mapisession and mapimesages) To create an e-mail client this allows you to
Read and send e-mails, as well.
Since i Haven't yet fasted out the entire format of the Contact Data Record, i can't get at information like addresses and phone numberscrips
Reading Them Directly from the
WAB File. The only Way I've first to get this information is using another vb6 project i've created (addrbook.vbp) That Opens Microsoft's Address Book
Reader
WAB.EXE), THEN Uses API Calls to Force It To Export The Address Book As a comma-separated-value (.csv) file. my program dam
Reads this file and displays the information in a listview. a hokey method of getting at The Data, I'll Admit, But The Best I've Been Able To Do, So Far.
My Programs Were Tested ON A Computer Running Windows 2000 SP4 with Outlook Express 6.
Ugh. . In fact, these data can be obtained through Microsoft's API, but other information, such as companies, phones, families, etc. The format is more chaotic, basically in the end of the file, but from what position starts, I can't find it. To the law. . .
In addition, the address of the address will make a backup operation at each modification. This mechanism is to study it. .
0x8a8 records the start address of the file tail valid data