加入MSWORD.OLB类型库后

MFC自己生成如下代码:

#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" no_namespace

它导致和原来的名字冲突.

1.所以把它改正成:

#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" no_namespace    raw_interfaces_only \

    rename("FindText","_FindText")       \

    rename("Rectangle","_Rectangle")   \

    rename("ExitWindows","_ExitWindows")

 

如果是自己通过appwizard添加派生类的话注释所有#import加载wordold库就可以拉

 

2.#import   "C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLL"  
#import   "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"  
#import   "C:\Program Files\Microsoft Office\OFFICE11\msword.olb"  rename("FindText","_FindText"), rename("ExitWindows","_ExitWindows")  
using namespace Word;

 

MSDN上的文章:http://support.microsoft.com/kb/307473/

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

  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 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

注意:这些类型库的默认位置是:

 收起该表格 展开该表格
 
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

Dao350.dll 和 Dao360.dll 的默认位置是 C:\Program Files\Common Files\Microsoft Shared\Dao 下列步骤演示如何生成一个简单的自动化客户端。此过程有三个主要步骤:

  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 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

注意:这些类型库的默认位置是:

 收起该表格展开该表格
 
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

Dao350.dll 和 Dao360.dll 的默认位置是 C:\Program Files\Common Files\Microsoft Shared\Dao

 

另外一篇:http://support.microsoft.com/kb/309294/EN-US

posted on 2010-04-30 22:13  火眼金睛  阅读(1725)  评论(0)    收藏  举报