- 下载演示项目 - 6.5 Kb
- 下载源 - 11 Kb
介绍
Outlook 已成为个人信息管理软件中的事实上的标准。几乎每个人都使用这个软件来管理他们的需求。需要以编程方式操作存储在 Outlook 中的信息。微软为此提供了 Outlook 对象模型。仔细查看 MSDN 上的示例会发现几乎所有示例都在 Visual Basic 中。(不那么差;-)) C++ 程序员应该为此做什么?由于 Outlook 对象模型是 COM 接口的集合,因此任何符合 COM 的语言都可以使用它。此示例可以从 Outlook 中的任何联系人文件夹导入联系人。
要在 C++ 中使用 Office/Outlook 对象,需要导入以下文件...
C++ //For Office XP #import "E:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll" named_guids #import "E:\Microsoft Office\Office10\MSOUTL.OLB" \ no_namespace exclude("_IRecipientControl", "_DRecipientControl");
C++ //For Office 2000 #import "E:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll" named_guids #import "E:\Microsoft Office\Office10\MSOUTL.OLB" \ no_namespace exclude("_IRecipientControl", "_DRecipientControl");
C++ //Code to import Contacts... _ApplicationPtr pApp; _ItemsPtr pItems; MAPIFolderPtr pFolder; _ContactItemPtr pContact; HRESULT hr; try { hr=pApp.CreateInstance(__uuidof(Application)); if (FAILED(hr)) { MessageBox("Unable to instantiate Outlook.", "Outlook Error",MB_OK); return; } if (m_Option.GetCheck()) //default outlook contacts folder { pFolder=pApp->GetNamespace(_bstr_t("MAPI"))-> GetDefaultFolder(olFolderContacts); if (pFolder==NULL) { MessageBox("Could not find default contacts folder.", "Outlook Error"); return; } } else //display folder selection window { pFolder=pApp->GetNamespace(_bstr_t("MAPI"))->PickFolder(); if (pFolder==NULL) return; if (pFolder->GetDefaultItemType()!=olContactItem) { MessageBox("Select folder is not a Contact folder.", "Outlook Contacts"); return; } } pItems=pFolder->GetItems(); if (pItems==NULL) { MessageBox("Unabel to get Contact Items.", "Outlook Error"); return; } pContact=pItems->GetFirst(); m_ContactList.ResetContent(); while(1) { if (pContact==NULL) break; CString strTemp; strTemp=(char *)pContact->GetFullName(); strTemp=strTemp + "<"; strTemp=strTemp + (char *)pContact->GetEmail1Address(); strTemp=strTemp + ">"; m_ContactList.AddString(strTemp); pContact=pItems->GetNext(); } } catch(_com_error &e) { MessageBox((char *)e.Description()); }
此示例导入联系人信息,但稍加修改即可使其也从 Outlook 导入任何其他信息。这包括约会项目、电子邮件、便笺、任务等。例如,要从日历文件夹中导入约会项目,只需要创建一个 _AppointmentItemPtr 智能指针类的对象,而不是 _ContactItemPtr。
Outlook是最常用的邮箱收发软件,首次安装配置Outlook请参阅博文《首次安装配置Outlook流程详解》。
安装配置过程中可能会出现无法与Microsoft exchange连接的问题,其解决方法参见博文《完美解决“Outlook 与 Microsoft Exchange 的连接不可用,Outlook 必须联机或已连接才能完成此操作”的问题》