c++ - 如何在所有版本上使用 C++ 动态访问 outlook 中的提取联系人

标签 c++ com outlook

我想使用 C++ 从 outlook(主要是联系人)中提取数据。我已经在以下位置找到了方法:http://www.codeproject.com/Articles/3695/Importing-contacts-from-Outlook?msg=3005747#xx3005747xx

但这里的导入语句是硬编码的:#import "E:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll"

是否可以动态加载dlls和tlb文件并使用它,以便该软件可以在不同版本的outlook和windows中运行。 (目前通过硬编码我无法访问不同版本的 Outlook,因为路径不同)

最佳答案

像这样导入 DLL 并不意味着您以任何方式链接到有问题的 DLL。这只是意味着它将导入 DLL 包含的类型库。类型库将描述您要使用的 COM 组件:接口(interface)、组件类、guid、iid、枚举等。

在运行时,当您实例化 COM 类时,COM 将从标记为 the one that serves it 的组件创建它的实例.因此,在 Office 案例中,如果您只安装了 Office 14,Office 14 将被标记为此类的 COM 服务器,您甚至不知道实际上将加载什么 DLL。

即使您对所依赖的 Office 类型库版本进行硬编码,它也应该适用于后续版本的 Office,因为 COM 依赖于永远不应更改的二进制契约。

当然,如果您导入 Office 10 库,您将无法使用比方说 Office 14 更新的组件。

关于c++ - 如何在所有版本上使用 C++ 动态访问 outlook 中的提取联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16933296/

相关文章:

crash - Outlook加载崩溃报告

vba - 在 Word VBA 中使用 .body 而不是 .htmlbody 将我的电子邮件正文的一部分设为粗体

c++ - unsigned char* 值转为十六进制

python - 使用 pybind11 共享 MPI 通信器

asp.net - 生成word文档时检索组件错误的COM类工厂

python - "Not implemented"使用pywin32控制Adobe Acrobat时出现异常

c++ - 在多个 DLL 中注册常见的 Qt 元类型

c++ - 复制数组的元素以创建一个新单词

c# - 注册 免费 COM Interop : The application has failed to start because its side-by-side configuration is incorrect

excel - 通过 Outlook 电子邮件发送 Excel 形状