转载:How to create an automation project using MFC and a type library

This article was previously published under Q178749

 

SUMMARY
This article illustrates, in detail, how to automate component integration with COM-compliant applications such as the Microsoft Office applications.

 

MORE INFORMATION
The following section illustrates how you can create an MFC project. The example automates Microsoft Excel. You can use the first 8 steps for any project, and modify steps 9 through 15 when you work with another application.

Create an automation project

   1. With Microsoft Developer Studio, start a new "MFC AppWizard (exe)" project named "AutoProject."
   2. In step 1 of the MFC AppWizard, choose "Dialog Based" for the application type and then click Finish.

      The New Project Information dialog box appears and indicates that the Classes to be created include:

             

      Click OK to create the project.
   3. The Dialog box "IDD_AUTOPROJECT_DIALOG" opens in the Visual Studio design/edit area. Modify it according to the instructions in the next two steps.
   4. Remove the Label control (IDC_STATIC) and the Cancel button (IDCANCEL).
   5. Change the name of the OK button to "IDRUN" and the caption to "Run." Close the AutoProject.rc dialog box design form.
   6. Click ClassWizard on the View menu (or press CTRL+W).
   7. Select the Message Maps tab. Select IDRUN in the Object Ids list box and select "BN_CLICKED" in the Messages list box. Click Add Function and accept the function name "OnRun". Click OK to close the ClassWizard.

      NOTE: This step adds a declaration for the function member "OnRun();" to the header file named AutoProjectDLG.h. This step also adds an empty skeleton message handler function named CAutoProjectDlg::OnRun() to the file named AutoProjectDLG.cpp.
   8. Click ClassWizard on the View menu (or press CTRL+W).
   9. Select the Automation tab. Click Add Class and choose "From a type library." Navigate to select the object library for the application you wish to automate (for this example, if you are automating Excel 97, choose the Microsoft Excel 8.0 Object Library; the default location is C:/Program Files/Microsoft Office/Office/Excel8.olb).

      If you are automating Microsoft Excel 2000, choose Microsoft Excel 9.0 Object Library for which the default location is the C:/Program Files/Microsoft Office/Office/Excel9.olb.

      If you are automating Microsoft Excel 2002 and Microsoft Office Excel 2003, the object library is embedded in the file Excel.exe. The default location for Excel.exe in Office 2002 is C:/program Files/Microsoft Office/Office10/Excel.exe. The default location for Excel.exe in Office 2003 is C:/program Files/Microsoft Office/Office11/Excel.exe. Once you have selected the appropriate object library, click Open. Select all classes in the Confirm Classes list, and then click OK.

      NOTE: The list box in the Confirm Classes dialog box contains all of the IDispatch interfaces (which are virtually identical to classes) in the Microsoft Excel type library. In the lower half of the dialog box you will see that an Implementation file named Excel8.cpp contains generated class wrappers derived from ColeDispatchDriver(), and the appropriate declaration header file is named Excel8.h. (For Excel 2002 and Excel 2003, the files are named Excel.cpp and Excel.h.)
  10. Click OK to close the MFC ClassWizard dialog box.
  11. Add the following code to the CAutoProjectApp::InitInstance() function, which loads and enables the COM services library:

            

  12. Add the following line to the #include statements at the top of the AutoProject.cpp program file:

            

  13. Add the include statement for excel8.h after the include statement for stdafx.h at the top of the AutoProjectDlg.cpp program file:

 
           

  14. Add automation code to the CAutoProjectDlg::OnRun() so that it appears as shown below:

            

  15. Build and run the project. RESULTS: When you click the Run button in the dialog box, Microsoft Excel will be launched. Activate the Auto_Excel dialog box and dismiss the message box. Microsoft Excel will quit when the CAutoProjectDlg::OnRun() function ends because the application variable will have gone out of scope.


Additional Notes
Once you have added the classes from a type library to your project (as you did in step 9 above), you will notice that many classes have been added to the project. In ClassView, you can double-click a class to see the member functions of that class and then double-click the member function to view the definition of that function in the Excel8.cpp implementation file.

You need to go to the definition of a member function if you wish to verify a return type or if you need to change a function's implementation. Any time you change a function definition, remember to change the declaration in the Excel8.h file. When doing so, be sure that you change the correct function declaration; sometimes, the same name is given to member functions of multiple classes--GetApplication() is one such example.

Although the steps above illustrate how to automate Microsoft Excel, you can apply the same ideas to automating other applications. The list below contains the file names for the type libraries of the Microsoft Office applications:

     

NOTE: The default location for these type libraries is C:/Program Files/Microsoft Office/Office (for Office 2002 the path is C:/.../Office10 and for Office 2003 the path is C:/.../Office11), except for Dao350.dll or Dao360.dll, and Microsoft Office 10(MSO.dll). The default location for Dao350.dll/Dao360.dll is C:/Program Files/Common Files/Microsoft Shared/Dao. The default location for MSO.dll is C:/Program Files/Common Files/Microsoft Shared/Office10 for Office 2002 and C:/Program Files/Common Files/Microsoft Shared/Office11 for Office 2003.
Back to the top

 

(原文出处:http://support.microsoft.com/kb/178749/EN-US

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值