Q&A

  • Outlook Express 및 윈도우 주소록에 관하여.
제다이 오픈소스.
ftp://delphi-jedi.org/api/WAB.zip

주소록 API를 써서 만든건데
추가, 수정, 삭제, 검색 물론 잘됩니다.

문제는 수정이야 그렇다 쳐도, 주소록 추가할때
기본 윈도우 주소록 입력폼으로 입력하는것 말고,
이를 창 안뜨고 프로그램으로 직접 엔트리에 입력해 보신분들.

살짝 노하우를 전수하여 주십시오 ^^;

1  COMMENTS
  • Profile
    무대뽀 2005.08.19 00:12



    드디어 두다리 쭉뻗고 잘 수 있겠습니다. 어휴..
    msdn 열나게 뒤지고 해석하느라;;;
    수정은 엔트리 지우고 다시 추가하는게 더욱 빠를것 같습니다.
    매우 복잡해서.. 걍 꽁수나...
    다음분들은 저처럼 맨땅에 헤딩하지 말길바라며 공개합니다. (별것도아니지만 괜히생색은 ^^;).
    위의 소스가 반드시 필요할겁니다.

    var
      Container   : IABContainer;
      EntryID     : PEntryID;
      EntryIDSize ,
      ObjType     : ULONG;
      MailUser    : IMailUser;
      WabEntryIDSize : ULONG;
      WabEntryID  : PEntryID;
      PropValues  : TSPropsArray;
    begin
      OleCheck(AddrBook.GetPAB(EntryIDSize, EntryID));
      OleCheck(AddrBook.OpenEntry(EntryIDSize, EntryID, nil, 0,
        ObjType, IUnknown(Container)));
      OleCheck(WabObject.FreeBuffer(EntryID));

      OleCheck(HrGetWABTemplateID(MAPI_MAILUSER, WabEntryIDSize, WabEntryID));

      OleCheck(Container.CreateEntry(WabEntryIDSize, WabEntryID, CREATE_CHECK_DUP_STRICT, IMAPIProp(MailUser)));

      ZeroMemory(@PropValues, SizeOf(PropValues));
      PropValues[0].dwAlignPad := 0;
      PropValues[0].ulPropTag  := PR_EMAIL_ADDRESS;
      PropValues[0].Value.lpszA := PChar('test@test.com');
      PropValues[1].dwAlignPad := 0;
      PropValues[1].ulPropTag  := PR_DISPLAY_NAME;
      PropValues[1].Value.lpszA := PChar('test babo');
      PropValues[2].dwAlignPad := 0;
      PropValues[2].ulPropTag  := PR_ADDRTYPE;
      PropValues[2].Value.lpszA := PChar('SMTP');
      PropValues[3].dwAlignPad := 0;
      PropValues[3].ulPropTag  := PR_HOME_TELEPHONE_NUMBER;
      PropValues[3].Value.lpszA := PChar('000-000-0000');

      OleCheck(MailUser.SetProps(4, @PropValues, nil));
      OleCheck(MailUser.SaveChanges(0));