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





  • 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


Anmelden zum Antworten