首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从wab (mapi)提取联系人和通讯组列表(组)

从wab (mapi)提取联系人和通讯组列表(组)
EN

Stack Overflow用户
提问于 2012-02-23 07:21:00
回答 1查看 537关注 0票数 0

我正在寻找一种方法来提取所有联系人和通讯组列表(与相关的联系人)从WAB (Windows通讯簿)。

我需要这样做,因为我需要导入地址簿,其中包含圆方中的通讯组列表/组。

经过一些研究,我在代码项目( http://www.codeproject.com/Articles/3407/Accessing-the-Windows-Address-Book )上创建了一个C++项目,但这个支持仅限于联系。

在MSDN上,我发现iAddrBook的OpenEntry方法应该在第三个参数中支持要打开的接口,在我的例子中是iDistList,但是我在任何地方都找不到接口id。

我搜索了一些关于WAB文件结构的文档,但一无所获。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-02-23 08:32:40

下面是我用来实现这一点的路径:

  1. 我使用wab32动态链接库中的WABOpen方法来获取wab32的lpAddr;
  2. 我设置PAB文件夹lpAddr:调用lpAddr->GetPAB(),调用OpenEntry获取容器,然后在容器上使用GetContentsTable获取LPMAPITABLE lpTable。
  3. 要获取表元素计数使用GetRowCount on lpTable
  4. 验证给定的表行是否是通讯组列表,使用QueryRows,这应该返回MAPI_DISTLIST或MAPI_MAILUSER.
  5. If这是一个MAPI_DISTLIST行,然后使用其PR_ENTRYID调用lpAdrBook->OpenEntry(),这应该返回IABContainer容器,您可以在该容器上调用GetContentsTable以获取包含此通讯组列表内容的表格。

最后一个OpenEntry如下所示,我没有在任何地方设置第三个参数:

代码语言:javascript
复制
  // Now emails will be loaded.
  ULONG ulObjType;
  IUnknown* lpUnk;
  hr = lpAdrBook->OpenEntry(DistEntryId.size, (LPENTRYID)DistEntryId.ab, NULL, 0,   &ulObjType, &lpUnk );
  if (FAILED(hr)) {
   assert(false); return hr;
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9404827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档