在VCKBASE上下载的例子编译也没有成功.....有人做过吗?急呀

解决方案 »

  1.   

    LoadLibrary("wab32.dll")
    GetProcAddress()
    如果隐式链接到wab32.dll,则跳过上面的步骤
    WABOpen() --> IAddrBook/IWABObject 注意IWABObject这个对象必须保留起来,很多后续调用分配的内存必须由它来释放,否则会发生内存泄露或者释放出错
    IAddrBook::GetContentsTable(WAB_LOCAL_CONTAINERS|WAB_PROFILE_CONTENTS,...) --> IMAPITable
    IMAPITable::GetRowCount() --> rowsNum
    IMAPITable::QueryRows(rowsNum,...) --> SRowSet
    SRowSet::cRows 就是联系人个数
    SRowSet::aRow[i] 就是联系人SRow
    从SRow可能还得不到联系人的所有属性,但是能得到ENTRYID,做法是循环寻找属性,直到SRow::lpProps[].ulPropTag==PR_ENTRYID就表示是ENTRYID
    IAddrBook::OpenEntry(ENTRYID,...) --> IMAPIProp 这个就是一个联系人的具体接口
    IMAPIProp::GetProps() 这个调用可以得到联系人的任意属性值上面的代码只能算是伪代码,只是说明一个大致过程,真正要读取一个联系人的所有资料,代码行数应该在百行以上,相当麻烦。
      

  2.   

    另,MSDN上关于这些资料太少了,仅仅简单介绍每个接口方法,没有说明具体原理,我也是到微软论坛咨询和长时间探索才得以解决的。