如何使用 MFC 和类型库创建自动化项目

文章翻译 文章翻译
文章编号: 178749 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文详细说明如何使组件与 COM 兼容应用程序(如 Microsoft Office 应用程序)的集成自动执行。

更多信息

下面一节说明如何创建 MFC 项目。该示例使 Microsoft Excel 自动运行。您可以将前 8 个步骤用于任何项目,在使用其他应用程序时可修改步骤 9 至步骤 15。

创建自动化项目

  1. 在 Microsoft Developer Studio 中,启动一个名为“AutoProject”的新“MFC AppWizard (exe)”项目。
  2. 在 MFC AppWizard 的步骤 1 中,为应用程序类型选择“对话框基于”,然后单击“完成”。

    出现“新项目信息”对话框,指示要创建的类包括:
          Application: CAutoProjectApp in AutoProject.h and AutoProject.cpp
          Dialog: CAutoProjectDlg in AutoProject.h and AutoProjectDlg.cpp
    						
    单击“确定”创建项目。
  3. “IDD_AUTOPROJECT_DIALOG”对话框在 Visual Studio 的设计/编辑区域打开。按照下面两个步骤中的说明进行修改。
  4. 删除“标签”控件 (IDC_STATIC) 和“取消”按钮 (IDCANCEL)。
  5. 将“确定”按钮的名称更改为“IDRUN”,并将标题更改为“运行”。关闭 AutoProject.rc 对话框设计窗体。
  6. 单击“查看”菜单上的“ClassWizard”(或按 Ctrl+W)。
  7. 选择“消息映射”选项卡。在“对象 ID”列表框中选择“IDRUN”,在“消息”列表框中选择“BN_CLICKED”。单击“添加函数”并接受函数名称“OnRun”。单击“确定”关闭 ClassWizard。

    注意:这一步骤将函数成员“OnRun();”的声明添加到名为 AutoProjectDLG.h 的头文件中,另外还将名为 CAutoProjectDlg::OnRun() 的空主干消息处理函数添加到名为 AutoProjectDLG.cpp 的文件中。
  8. 单击“查看”菜单上的“ClassWizard”(或按 Ctrl+W)。
  9. 选择“自动”选项卡。单击“添加类”,并选择“从类型库”。在目录中浏览,为要自动运行的应用程序选择对象库(在本例中,如果要使 Excel 97 自动运行,请选择 Microsoft Excel 8.0 对象库;默认位置为 C:\Program Files\Microsoft Office\Office\Excel8.olb)。

    如果要使 Microsoft Excel 2000 自动运行,请选择 Microsoft Excel 9.0 对象库,其默认位置为 C:\Program Files\Microsoft Office\Office\Excel9.olb。

    如果要使 Microsoft Excel 2002 和 Microsoft Office Excel 2003 自动运行,则对象库将被嵌入到文件 Excel.exe 中。Office 2002 中的 Excel.exe 文件的默认位置为 C:\Program Files\Microsoft Office\Office10\Excel.exe。Office 2003 中的 Excel.exe 文件的默认位置为 C:\Program Files\Microsoft Office\Office11\Excel.exe。在选择了相应的对象库后,请单击“打开”。在“确认类”列表中选择所有类,然后单击“确定”。

    注意:“确认类”对话框中的列表框包含 Microsoft Excel 类型库中的所有 IDispatch 接口(它们与类几乎完全一样)。在该对话框的下半部分,您将看到一个名为 Excel8.cpp 的实现文件,它包含由 ColeDispatchDriver() 派生的已生成的类包装,而相应的声明头文件名为 Excel8.h。(在 Excel 2002 和 Excel 2003 中,这些文件的名称分别为 Excel.cpp 和 Excel.h。)
  10. 单击“确定”关闭“MFC ClassWizard”对话框。
  11. 将以下代码添加到 CAutoProjectApp::InitInstance() 函数中,该函数加载并启用 COM 服务库:
          BOOL CAutoProjectApp::InitInstance()
          {
             if(!AfxOleInit())  // Your addition starts here
             {
                AfxMessageBox("Could not initialize COM dll");
                return FALSE;
             }                 // End of your addition
    
             AfxEnableControlContainer();
          .
          .
          .
    
          }
    					
  12. 将下面的代码行添加到 AutoProject.cpp 程序文件开头的 #include 语句中:
          #include <afxdisp.h>
    					
  13. 将 excel8.h 的 include 语句添加到 AutoProjectDlg.cpp 程序文件开头 stdafx.h 的 include 语句之后:
          #include "stdafx.h"
          #include "excel8.h" // excel.h in the case of Excel 2002 and Excel 2003.
    					
  14. 将自动化代码添加到 CAutoProjectDlg::OnRun() 中,使它看起来像下面这样:
          void CAutoProjectDlg::OnRun()
          {
              _Application app;  // app is the Excel _Application object
    
              // Start Excel and get Application object...
             if(!app.CreateDispatch("Excel.Application"))
             {
                AfxMessageBox("Couldn't start Excel.");
             }
             else
             {
                //Make Excel Visible and display a message
              app.SetVisible(TRUE);
              AfxMessageBox ("Excel is Running!");
             }
          }
    					
  15. 生成并运行项目。结果:单击对话框中的“运行”按钮时,将启动 Microsoft Excel。激活“Auto_Excel”对话框并关闭消息框。CAutoProjectDlg::OnRun() 函数结束时,Microsoft Excel 将退出,因为这时应用程序变量超出了作用域。

其他说明

将类型库中的类添加到项目(如上面步骤 9 中那样)后,您将发现项目中已添加了许多类。在 ClassView 中,您可以双击某个类查看该类的成员函数,然后双击成员函数,查看该函数在 Excel8.cpp 实现文件中的定义。

如果要验证返回类型或需要更改函数的实现,您需要转到成员函数的定义。每次更改函数定义时,请记住更改 Excel8.h 文件中的声明。这样做时,请务必更改正确的函数声明;有时,多个类的成员函数的名称是相同的(如 GetApplication())。

虽然以上步骤阐述了如何使 Microsoft Excel 自动运行,但您还可以使用同样的方法使其他应用程序自动运行。以下列表包含 Microsoft Office 应用程序类型库的文件名:
   应用程序                           类型库
   --------------------------------------------------

Microsoft Access 97                   Msacc8.olb
Microsoft Jet Database 3.5            DAO350.dll
Microsoft Binder 97                   Msbdr8.olb
Microsoft Excel 97                    Excel8.olb
Microsoft Graph 97                    Graph8.olb
Microsoft Office 97                   Mso97.dll
Microsoft Outlook 97                  Msoutl97.olb
Microsoft PowerPoint 97               Msppt8.olb

Microsoft Word 97                     Msword8.olb
Microsoft Access 2000                 Msacc9.olb
Microsoft Jet Database 3.51           DAO360.dll
Microsoft Binder 2000                 Msbdr9.olb
Microsoft Excel 2000                  Excel9.olb
Microsoft Graph 2000                  Graph9.olb
Microsoft Office 2000                 Mso9.dll
Microsoft Outlook 2000                Msoutl9.olb
Microsoft PowerPoint 2000             Msppt9.olb
Microsoft Word 2000                   Msword9.olb 

Microsoft Access 2002                 Msacc.olb
Microsoft Excel 2002                  Excel.exe
Microsoft Graph 2002                  Graph.exe 
Microsoft Office 2002                 MSO.dll
Microsoft Outlook 2002                MSOutl.olb
Microsoft PowerPoint 2002             MSPpt.olb
Microsoft Word 2002                   MSWord.olb

Microsoft Office Access 2003          Msacc.olb
Microsoft Office Excel 2003           Excel.exe
Microsoft Graph 2003                  Graph.exe 
Microsoft Office 2003                 MSO.dll
Microsoft Office Outlook 2003         MSOutl.olb
Microsoft Office PowerPoint 2003      MSPpt.olb
Microsoft Office Word 2003            MSWord.olb
				
注意:这些类型库的默认位置是 C:\Program Files\Microsoft Office\Office(在 Office 2002 中,相应的路径为 C:\...\Office10;在 Office 2003 中,相应的路径为 C:\...\Office11),Dao350.dll 或 Dao360.dll 以及 Microsoft Office 10 (MSO.dll) 除外。Dao350.dll/Dao360.dll 的默认位置是 C:\Program Files\Common Files\Microsoft Shared\Dao。对于 Office 2002,MSO.dll 的默认位置是 C:\Program Files\Common Files\Microsoft Shared\Office10;对于 Office 2003,其默认位置是 C:\Program Files\Common Files\Microsoft Shared\Office11。

参考

本文介绍了生成对话框项目的具体方法。如果您想查看有关在 Microsoft Developer Studio 环境中生成 VC++ 项目的过程的更为一般性的文档,可以使用 Visual Studio InfoView 访问一个优秀的教程。要访问此教程,请单击“帮助”菜单上的“搜索”。单击“索引”选项卡,并键入以下内容:
使用项目
单击“列出主题”。选择“主页:使用项目”主题,并单击“显示”。 有关使 Office 应用程序自动运行的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
222101 如何查找和使用 Office 对象模型文档

属性

文章编号: 178749 - 最后修改: 2006年1月23日 - 修订: 4.1
这篇文章中的信息适用于:
  • Microsoft Foundation Class Library 4.2?当用于
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
关键字:?
kbhowto kbinterop kbautomation KB178749
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