以下内容在vc++6.0测试通过,但是在vs2008里的MFC里测试无法通过。
转自微软:http://support.microsoft.com/?kbid=220600#appliesto
请遵循下面的步骤来生成和运行示例:
- 启动 Visual C++ 并新建一个基于 MFC EXE 对话框的应用程序。
- 向该对话框中添加一个按钮。
- 双击该按钮以为其添加处理程序并添加以下代码:
// Start Outlook. // If it is already running, you'll use the same instance... _Application olApp; COleException e; if(!olApp.CreateDispatch("Outlook.Application", &e)) { CString str; str.Format("CreateDispatch() failed w/error 0x%08lx", e.m_sc); AfxMessageBox(str, MB_SETFOREGROUND); return; } // Logon. Doesn't hurt if you are already running and logged on... NameSpace olNs(olApp.GetNamespace("MAPI")); COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); olNs.Logon(covOptional, covOptional, covOptional, covOptional); // Create and open a new contact _ContactItem olItem(olApp.CreateItem(2)); // Setup Contact information... olItem.SetFullName("James Smith"); COleDateTime bdDate; bdDate.SetDate(1975, 9, 15); olItem.SetBirthday(bdDate); olItem.SetCompanyName("Microsoft"); olItem.SetHomeTelephoneNumber("704-555-8888"); olItem.SetEmail1Address("someone@microsoft.com"); olItem.SetJobTitle("Developer"); olItem.SetHomeAddress("111 Main St./nCharlotte, NC 28226"); // Save Contact olItem.Save(); // Create a new appointment _AppointmentItem olAppt(olApp.CreateItem(1)); // Schedule it for two minutes from now... COleDateTime apptDate = COleDateTime::GetCurrentTime(); olAppt.SetStart((DATE)apptDate + DATE(2.0/(24.0*60.0))); // Set other appointment info... olAppt.SetDuration(60); olAppt.SetSubject("Meeting to discuss plans..."); olAppt.SetBody("Meeting with James to discuss plans."); olAppt.SetLocation("Home Office"); olAppt.SetReminderMinutesBeforeStart(1); olAppt.SetReminderSet(TRUE); // Save Appointment olAppt.Save(); // Prepare a new mail message _MailItem olMail(olApp.CreateItem(0)); olMail.SetTo("someone@microsoft.com"); olMail.SetSubject("About our meeting..."); olMail.SetBody( "Hi James,/n/n" "/tI'll see you in two minutes for our meeting!/n/n" "Btw: I've added you to my contact list!"); // Send the message! olMail.Send(); AfxMessageBox("All done.", MB_SETFOREGROUND); olNs.Logoff();
- 启动 ClassWizard (Control-W),单击“自动化”选项卡,并选择“添加类”菜单下的“来自类型库”。
- 在显示的对话框中,导航到安装 Outlook 的目录,并选择 Outlook 类型库(请参见下表)。选择所找到的所有项并单击“确定”,以便让 ClassWizard 为所有项生成 MFC 包装类:
收起该表格
Outlook 版本 类型库 97 msoutl8.olb 98 msoutl85.olb 2000 msoutl9.olb 2002 msoutl.olb 2003 msoutl.olb - 在按钮处理程序的实现代码之前添加以下内容:
#include "msoutl85.h" // for Outlook 2000 use msoutl9.h // for Outlook 2002 & Outlook 2003 use msoutl.h // Ole-initialization class. class OleInitClass { public: OleInitClass() { OleInitialize(NULL); } ~OleInitClass() { OleUninitialize(); } }; // This global class calls OleInitialize() at // application startup, and calls OleUninitialize() // at application exit... OleInitClass g_OleInitClass;
- 编译并运行该项目。运行该项目之后,您应该拥有一个名为“James Smith”的新联系人、一个预定在两分钟后进行的约会(一分钟后显示提醒),并且已向 someone@microsoft.com 发送了一封邮件。另外,因为您添加了您的联系人的生日 (9/15),所以还会添加一个定期事件以便 Outlook 日历能够在该日期提醒您。
-
实现 Microsoft Outlook 2000、2002 和 2003 的自动化操作
<script type="text/javascript"></script> 您可以利用上述示例代码来做一个小的改动,从而实现 Outlook 2000、2002 和 2003 的自动化操作。 Outlook 97 命名空间类成员在 Outlook 2000、2002 和 2003 中已更改为 _Namespace。若要使用上面的代码来实现 Outlook 2000、2002 和 2003 自动化操作,请将下面的行:Namespace olNS(olApp.GetNames("MAPI"));
_Namespace olNS(olApp.GetNames("MAPI"));