outlook - C++ MAPI。管理用户和分发列表的 PR_ENTRYID
问题描述
在我的 C++ 应用程序中,我有一个带有联系人的 IMAPITable。
在方法 1 中,我搜索联系人并获取联系人属性,例如 PR_DISPLAY_NAME_W ir PR_ENTRYID。在方法 2 中,我必须收到一个 ID,并且我必须打开此条目才能获取另一个属性。例如,对于联系人,我需要 PR_ADDRTYPE_W,对于分发列表,我需要其所有成员的地址。
PR_ENTRYID 是识别联系人/distList(在 1 中返回 id)并在需要时轻松找到(2)的最佳方法吗?我认为它是,因为它是一个唯一值,并且我看到 pAddressBook->OpenEntry() 可以帮助我,将 entryID 作为参数传递。
首先,它是否正确?我可以直接从地址簿中找到联系人(使用 entryId)吗?在我的 AB 中,我有 10 个列表,联系人在其中之一
我的问题是我不知道如何管理这个 ID,在我拥有的方法 1 中返回什么:
pRows->aRow->lpProps[abPR_ENTRYID]
以及如何在方法 2 中使用我需要的 OpenEntry
ULONG cbEntryID
LPENTRYID lpEntryID
hr = pAddressBook->OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface, // nullptr
ULONG ulFlags, // 0L
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk // In my case
);
关于返回值 (lppUnk),对于联系人,它是 IMailUser*,对于分发列表,是 IDistList*?
恐怕这一刻我有点失落了……
有什么帮助吗?
谢谢,迭戈
解决方案
lpulObjType
(out) 代码中上面的参数将告诉您返回的对象类型是什么 - MAPI_MAILUSER
vs MAPI_DISTLIST
。
推荐阅读
- c# - 有没有办法仅在断言失败时评估断言的第二个参数?
- php - 在 laravel 中管理多个角色
- epplus - EPPlus:LoadFromCollection 出现“列超出范围”错误
- html - Bootstrap 列等高
- c++ - 使用 QFile::write 的正确方法?
- sql - Oracle SQL - ORA-00904: "IPA"."CHECK_ID": 无效标识符
- php - 在php中对数据进行排序。只有变量可以通过引用传递
- http - 是否可以将 HTTP POST req 的标头和正文转换为 JSON 并重复到上游
- python - 使用 python 在 MacOSX 上使用 ChromeDriver 时显示错误
- java - 创建帐户时出现条带连接错误