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

How to access extract contacts from outlook using C++ dynamically on all versions

本文关键字:访问 动态 outlook 联系人 提取 c++ 版本      更新时间:2023-10-16

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

但是这里的导入语句是硬编码的:#import "E:Program FilesCommon FilesMicrosoft SharedOffice10mso.dll"

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

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

在运行时,当你实例化一个COM类时,COM将从被标记为服务它的组件中创建一个它的实例。所以在Office的情况下,如果你只安装了Office 14, Office 14将被标记为这个类的COM服务器,你甚至不知道实际上会加载什么DLL。

即使你硬编码了你所依赖的Office类型库的版本,它也应该与Office的后续版本一起工作,因为COM依赖于永远不会改变的二进制契约。

当然,如果你导入Office 10库,你将无法使用Office 14的新组件。

不要将#import指向文件,而是提供类名或类型库GUID。http://msdn.microsoft.com/en-us/library/8etzzkb6 (v = vs.71) . aspx