摘要
本文介绍如何生成 Visual C++ .NET 项目,该项目充当组件对象模型 (COM) 兼容的应用程序的自动化客户端。 本文中的示例将 Microsoft Foundation Class (MFC) 与 Office 组件的类包装器结合使用。
更多信息
以下步骤演示如何生成简单的自动化客户端。 此过程有三个主要步骤:
- 创建自动化客户端。
- 添加代码以自动执行 Microsoft Excel。
- 运行自动化客户端。
可以使用第一步 (创建自动化客户端) ,创建新的自动化客户端,而不考虑所使用的自动化服务器。 第二步 (将代码添加到自动执行 Microsoft Excel) ,具体到自动化服务器。
创建自动化客户端
启动 Microsoft Visual Studio .NET。 在“文件”菜单上,单击“新建”,然后单击“项目”。 从 Visual C++ 项目类型中选择 MFC 应用程序,然后将项目命名为 AutoProject。
出现 MFC 应用程序向导时,单击“应用程序类型”,将应用程序类型设置为“基于对话框”,然后单击“完成”。
按如下所示修改IDD_AUTOPROJECT_DIALOG对话框:
- 删除 IDCANCEL) (标签控件 (IDC_STATIC) 和“取消”按钮。
- 将 OKbutton 的 ID 更改为“IDRUN”,将标题更改为“运行”。
从自动化服务器的类型库创建类包装器,如下所示:
在解决方案资源管理器中,右键单击“自动项目”,然后单击“添加类”。
单击 Typelib 中的 MFC 类,然后单击“打开”。
单击“从:注册表”添加类,并找到自动化服务器的已注册类型库。
对于此示例,请为 Microsoft ExcelXP 选择“Microsoft Excel 10.0 类型库”或 Microsoft Excel 2000 的“Microsoft Excel 9.0 类型库”。
从列表中选择所需的接口 () ,然后单击大于符号 () > 将其添加到 MFC 为其创建包装器的接口列表。 添加所有接口后,单击“完成”。
对于此示例,只需_Application接口。
重要 如果所选类型库中有许多接口,请仅选择要使用的接口,因为 MFC 将为每个选定的接口生成单独的标头文件。 通过最大程度地减少接口选择,可以在生成和编译文件期间避免不必要的开销。
若要将 COM 服务库加载并启用到 CAutoProjectApp::InitInstance 函数,请添加以下代码:
if(!AfxOleInit()) // Your addition starts here. { AfxMessageBox("Cannot initialize COM dll"); return FALSE; // End of your addition. } AfxEnableControlContainer();
为从自动化服务器的类型库中的接口生成的每个标头文件添加 include 指令。 在 AutoProjectDlg.cpp 顶部的 Stdafx.h 的 include 语句后面添加指令。
在此示例中,为 CApplication.h 标头文件添加一个包含,该文件为_Application接口生成:
#include "stdafx.h" #include "CApplication.h"
添加代码以自动执行 Microsoft Excel
在IDD_AUTOPROJECT_DIALOG对话框中,右键单击“运行”,然后单击下拉列表框中的“添加事件处理程序”。 在事件处理程序向导中,选择BN_CLICKED消息类型,然后单击“添加和编辑”。 添加以下代码以在处理程序中自动执行 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 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 Office 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| ||||Microsoft Office Access 2007|Msacc.olb| |Microsoft Office Excel 2007|Excel.exe| |Microsoft Office Graph 2007|Graph.exe| | 2007 Microsoft Office|MSO.dll| |Microsoft Office Outlook 2007|MSOutl.olb| |Microsoft Office PowerPoint 2007|MSPpt.olb| |Microsoft Office Word 2007|MSWord.olb|请注意,这些类型库的默认位置为:
|Office 版本|路径| |---|---| |Office 97|C:\Program Files\Microsoft Office\Office| |Office 2000|C:\Program Files\Microsoft Office\Office| |Office XP|C:\Program Files\Microsoft Office\Office10| |Office 2003|C:\Program Files\Microsoft Office\Office11| |2007 Office|C:\Program Files\Microsoft Office\Office12|Dao350.dll和Dao360.dll的默认位置是 C:\Program Files\Common Files\Microsoft Shared\Dao。