HOWTO:从 Visual C++ .NET 使用类型库实现 Office 自动化

文章翻译 文章翻译
文章编号: 307473 - 查看本文应用于的产品
本文的发布号曾为 CHS307473
展开全部 | 关闭全部

概要

本文演示如何生成一个 Visual C++ .NET 项目,使之充当符合组件对象模型 (COM) 标准的应用程序的自动化客户端。本文中的示例使用 Microsoft 基础类 (MFC) 和用于 Office 组件的类包装。

更多信息

下列步骤演示如何生成一个简单的自动化客户端。此过程有三个主要步骤:

  1. 创建自动化客户端。
  2. 添加代码以使 Microsoft Excel 自动运行。
  3. 运行自动化客户端。
无论您使用哪种自动化服务器,您都可以使用第一步“”来创建一个新的自动化客户端。而第二步“ 添加代码以使 Microsoft Excel 自动运行”是特定于自动化服务器的。

创建自动化客户端

  1. 启动 Microsoft Visual Studio .NET。在文件菜单上,单击新建,然后单击项目。从 Visual C++ 项目类型中选择 MFC Application(MFC 应用程序),然后将该项目命名为 AutoProject。
  2. 出现 MFC 应用程序向导后,单击应用程序类型,将应用程序类型设置为 Dialog Based(基于对话框),然后单击完成
  3. 按照以下步骤修改 IDD_AUTOPROJECT_DIALOG 对话框:
    1. 删除 Label 控件 (IDC_STATIC) 和 Cancel 按钮 (IDCANCEL)。
    2. OK 按钮的 ID 更改为“IDRUN”,将标题更改为“运行”。
  4. 按照以下步骤从类型库中为自动化服务器创建类包装:
    1. 在解决方案资源管理器中,右键单击 AutoProject,然后单击添加类
    2. 单击 MFC Class from Typelib(类型库中的 MFC 类),然后单击打开
    3. 单击 Add a class from:Registry(添加类自:注册表),并找到为您的自动化服务器注册的类型库。

      对于本例,请选择“Microsoft Excel 10.0 类型库”(对于 Microsoft Excel XP)或选择“Microsoft Excel 9.0 类型库”(对于 Microsoft Excel 2000)。
    4. 从列表中选择您需要的一个或多个接口,然后单击大于号 (>),将它们添加到 MFC 为其创建包装的接口的列表中。添加完所有接口后请单击完成

      对于本例,您只需要 _Application 接口。

      重要说明:如果您选择的类型库中有许多接口,则应只选择您想使用的接口,因为 MFC 将为所选的每个接口分别生成一个头文件。通过最大限度地缩小选择范围,您可以避免文件生成和编译期间不必要的系统开销。
  5. 要对 CAutoProjectApp::InitInstance 函数加载并启用 COM 服务库,请添加以下代码:
    if(!AfxOleInit())  // Your addition starts here.
    {
      AfxMessageBox("Cannot initialize COM dll");
      return FALSE;
      // End of your addition.
    }
    
    AfxEnableControlContainer();
    					
  6. 为每个从自动化服务器的类型库中的接口生成的头文件添加一个 include 指令。将这些指令添加到 AutoProjectDlg.cpp 顶部 Stdafx.h 的 include 语句后面。

    对于本例,请为 CApplication.h 头文件(该文件是为 _Application 接口生成的)添加一个 include 指令:
          #include "stdafx.h"
          #include "CApplication.h"
    					

添加代码以使 Microsoft Excel 自动运行

IDD_AUTOPROJECT_DIALOG 对话框中,右键单击运行,然后从下拉列表框中单击 Add event handler(添加事件处理程序)。在事件处理程序向导中,选择 BN_CLICKED 消息类型,然后单击 Add and Edit(添加并编辑)。在处理程序中添加以下代码以使 Excel 自动运行:
void CAutoProjectDlg::OnBnClickedRun()
{
   CApplication app;  // app is the Excel _Application object

   // Start Excel and get Application object.

   if(!app.CreateDispatch("Excel.Application"))
   {
      AfxMessageBox("Cannot start Excel and get Application object.");
      return;
   }
   else
   {
      //Make the application visible and give the user control of
      //Microsoft Excel.
      app.put_Visible(TRUE);
      app.put_UserControl(TRUE);
   }
} 
				

运行自动化客户端

按 F5 键生成并运行自动化客户端。出现对话框后,请单击运行。自动化客户端将启动 Excel 并使该应用程序可见。注意,即使在自动化客户端终止后,Excel 也能保持运行,因为已将该应用程序的控制权给予用户。

其他说明

从类型库向项目中添加类后,您可能会注意到这些类出现在项目的“类视图”中。在“类视图”中,您可以双击一个类以查看该类的方法,然后可以双击方法以查看该函数在 MFC 包装的实现文件中的定义。如果您想验证返回类型或需要更改函数的实现,则可以查看成员函数的定义。

虽然前面的步骤阐述的是如何使 Microsoft Excel 自动运行,但您也可以使用同样的方法使其他应用程序自动运行。下面的列表包含其他 Microsoft Office 应用程序的类型库的文件名:
收起该表格展开该表格
应用程序类型库
Microsoft Access 97Msacc8.olb
Microsoft Jet Database 3.5DAO350.dll
Microsoft Binder 97Msbdr8.olb
Microsoft Excel 97Excel8.olb
Microsoft Graph 97Graph8.olb
Microsoft Office 97Mso97.dll
Microsoft Outlook 97Msoutl97.olb
Microsoft PowerPoint 97Msppt8.olb
Microsoft Word 97Msword8.olb
Microsoft Access 2000Msacc9.olb
Microsoft Jet Database 3.51DAO360.dll
Microsoft Binder 2000Msbdr9.olb
Microsoft Excel 2000Excel9.olb
Microsoft Graph 2000Graph9.olb
Microsoft Office 2000Mso9.dll
Microsoft Outlook 2000Msoutl9.olb
Microsoft PowerPoint 2000Msppt9.olb
Microsoft Word 2000Msword9.olb
Microsoft Access 2002Msacc.olb
Microsoft Excel 2002Excel.exe
Microsoft Graph 2002Graph.exe
Microsoft Office 2002MSO.dll
Microsoft Outlook 2002MSOutl.olb
Microsoft PowerPoint 2002MSPpt.olb
Microsoft Word 2002MSWord.olb
Microsoft Office Access 2003Msacc.olb
Microsoft Office Excel 2003Excel.exe
Microsoft Office Graph 2003Graph.exe
Microsoft Office 2003MSO.dll
Microsoft Office Outlook 2003MSOutl.olb
Microsoft Office PowerPoint 2003MSPpt.olb
Microsoft Office Word 2003MSWord.olb
注意:这些类型库的默认位置是:
收起该表格展开该表格
Office 版本路径
Office 97C:\Program Files\Microsoft Office\Office
Office 2000C:\Program Files\Microsoft Office\Office
Office XPC:\Program Files\Microsoft Office\Office10
Office 2003C:\Program Files\Microsoft Office\Office11
Dao350.dll 和 Dao360.dll 的默认位置是 C:\Program Files\Common Files\Microsoft Shared\Dao。

参考

有关 Visual C++ .NET 的更多常规信息,请访问以下 Usenet 新闻组:
Microsoft.public.dotnet.languages.vc
请访问位于以下 Microsoft Web 站点中的 Visual C++ .NET 支持中心:
Visual C++ .NET (2002) 支持中心

属性

文章编号: 307473 - 最后修改: 2005年12月23日 - 修订: 6.2
这篇文章中的信息适用于:
  • Microsoft Office 专业版 2003
  • Microsoft Visual C++ .NET 2002 标准版
  • Microsoft Foundation Class Library 4.2
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft Office 97 Developer Edition
关键字:?
kbhowto kbnewsgrouplink kbautomation KB307473
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com