vc++ outlook编程。

以下内容在vc++6.0测试通过,但是在vs2008里的MFC里测试无法通过。

转自微软:http://support.microsoft.com/?kbid=220600#appliesto

 

请遵循下面的步骤来生成和运行示例:

  1. 启动 Visual C++ 并新建一个基于 MFC EXE 对话框的应用程序。
  2. 向该对话框中添加一个按钮。
  3. 双击该按钮以为其添加处理程序并添加以下代码:
       // 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();
    						
  4. 启动 ClassWizard (Control-W),单击“自动化”选项卡,并选择“添加类”菜单下的“来自类型库”。
  5. 在显示的对话框中,导航到安装 Outlook 的目录,并选择 Outlook 类型库(请参见下表)。选择所找到的所有项并单击“确定”,以便让 ClassWizard 为所有项生成 MFC 包装类:
    收起该表格 展开该表格
    Outlook 版本类型库
    97msoutl8.olb
    98msoutl85.olb
    2000msoutl9.olb
    2002msoutl.olb
    2003msoutl.olb
  6. 在按钮处理程序的实现代码之前添加以下内容:
       #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;
    						
  7. 编译并运行该项目。运行该项目之后,您应该拥有一个名为“James Smith”的新联系人、一个预定在两分钟后进行的约会(一分钟后显示提醒),并且已向 someone@microsoft.com 发送了一封邮件。另外,因为您添加了您的联系人的生日 (9/15),所以还会添加一个定期事件以便 Outlook 日历能够在该日期提醒您。
  8. 实现 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"));
    				
    Outlook 2002 和 Outlook 2003 的新的病毒防护功能可导致显示一个对话框,通知您某个程序正在使用您的通讯簿从您的计算机发送电子邮件,并询问您是否同意继续执行该操作。
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值