Windows Address Book (WAB)
-
Hallo,
ich suche ein vernünftiges Tutorial zur Windows Address Book (WAB) API mit Beispielen in C oder C++.
Vielen Dank im voraus.
Gruß
ube
-
In der MSDN gibt es nen Artikel dazu:
http://msdn.microsoft.com/library/default.asp?url=/workshop/wab/wabentry.asp
cu
-
Das habe ich schon gefunden aber da sind leider keine Beispiele drin.
-
Hallo,
sollte jemand ebenso eine einfach Möglichkeit suchen EMailadressen aus dem WAB auslesen zu können möchte ich nachfolgend ein Beispiel geben:
#include <windows.h> //---------------------------------------------------------------------------------------------------------------------- int GetRegString(char *SubKey, char *cValueName, char *cString, char *cDefault) { int iRet = 0; HKEY hKey; if(RegOpenKeyEx(HKEY_CURRENT_USER,SubKey,0,KEY_QUERY_VALUE,&hKey) == ERROR_SUCCESS){ DWORD dwType = REG_SZ; DWORD dwByts = 256; if(RegQueryValueEx(hKey,cValueName,NULL,&dwType,cString,&dwByts) == ERROR_SUCCESS){ if(!dwByts) *cString = 0; iRet = dwByts; } else{ if(cDefault){ strcpy(cString,cDefault); iRet = strlen(cString); } else{ *cString = 0; iRet = 0; } } RegCloseKey(hKey); } return(iRet); } //---------------------------------------------------------------------------------------------------------------------- HWND WABList_Create(HWND hWnd) { HWND bRetval = NULL; char *cString = calloc(2,MAX_PATH); if(GetRegString("Software\\Microsoft\\WAB\\WAB4\\Wab File Name","",cString,"")){ HANDLE hFile1 = CreateFile(cString,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if(hFile1){ HANDLE hFile2 = CreateFileMapping(hFile1,0,PAGE_READONLY,0,0,0); if(hFile2){ char *cBuf = (char*)MapViewOfFile(hFile2,FILE_MAP_READ,0,0,0); if(cBuf){ HWND hWABWnd = CreateWindow("LISTBOX",0,WS_CHILD | LBS_NOREDRAW | LBS_SORT,0,0,0,0,hWnd,NULL,GetModuleHandle(NULL),NULL); if(hWndWAB){ int nos = (int)(*(cBuf + 0x64)); DWORD add = MAKELONG(MAKEWORD(*(cBuf + 0x60),*(cBuf + 0x61)),MAKEWORD(*(cBuf + 0x62),*(cBuf + 0x63))); char *ca = cString + MAX_PATH; int ii; int j = 0; int len; for(len = 0;len < (nos * 68);len += 68){ for(ii = 0;ii <= 68;ii ++){ ca[ii] = *(cBuf + add + j + len); j += 2; } ca[68] = 0; j = 0; SendMessage(hWABWnd,LB_ADDSTRING,0,(LPARAM)ca); } bRetval = hWABWnd; } UnmapViewOfFile(cBuf); } CloseHandle(hFile2); } CloseHandle(hFile1); } } return(bRetval); } //----------------------------------------------------------------------------------------------------------------------
Gruß ube