如何建立使用 MFC 和型別程式庫的自動化專案

文章翻譯 文章翻譯
文章編號: 178749 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將說明,在詳細資料,如何自動化與 COM 相容的應用程式,例如 Microsoft Office 應用程式的元件整合。

其他相關資訊

下一節將說明如何建立一個 MFC 專案。此範例會自動執行 Microsoft Excel。您可以用於任何專案的前 8 步驟並修改步驟 9 到 15,當您使用另一個應用程式。

建立自動化專案

  1. 與 Microsoft 開發 o 人 h 員 ? 工 u 具 ? Studio 啟動新的 「 MFC AppWizard (exe)"專案名稱為"AutoProject]。
  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. 選取訊息對應] 索引標籤選取 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。一旦選取適當的物件程式庫請按一下 [開啟]。選取 [確認中的所有類別類別清單,然後再按一下 [確定]。

    注意: 確認類別] 對話方塊中的清單方塊包含的所有 IDispatch 介面 (也就是幾乎完全相同的類別) 在 Microsoft Excel 的型別程式庫中。在 [] 對話方塊的下半部您會看到名為 Excel8.cpp 的實作檔包含] 方塊中產生 ColeDispatchDriver(),從衍生的類別包裝函式,適當的宣告標頭檔為 Excel8.h。(Excel 2002 及 Excel 2003,該檔案的命名 Excel.cpp 和 Excel.h)。
  10. 按一下 [確定] 以關閉 [MFC ClassWizard] 對話方塊。
  11. 加入下列程式碼,它會載入並可讓 COM CAutoProjectApp::InitInstance() 函式以服務程式庫:
          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 <afxdisp.h>
    					
  13. 將包含陳述式的 excel8.h 為 stdafx.h 包含陳述式後面加入 AutoProjectDlg.cpp 程式檔案頂端:
          #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 檔案中的宣告。當這樣,是確定正確的函式宣告變更 ; 有時候,相同的名稱提供給的多個 classes--GetApplication() 成員函式是其中一個這類範例。

雖然上述步驟說明如何自動化 Microsoft Excel,您可以套用相同的想法來自動執行其他應用程式。下列清單包含型別程式庫,Microsoft Office 應用程式的檔案名稱:
   Application                           Type Library
   --------------------------------------------------

   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。 MSO.dll 預設的位置是您的 Office 2002 C:\Program Files\Common Files\Microsoft Shared\Office10 和 Office 2003 的 C:\Program Files\Common Files\Microsoft Shared\Office11。

?考

本文介紹建置對話方塊專案特定的方式。如果您希望看到更一般有關的文件處理程序的建置 VC + + 專案在 Microsoft 開發 o 人 h 員 ? 工 u 具 ? Studio 環境,沒有可以使用 Visual Studio InfoView 存取一個絕佳教學課程。若要存取本教學課程,按一下 [說明] 功能表上的 [搜尋]。按一下 [索引] 索引標籤,然後輸入下列:
使用專案
按一下 [列出主題]。選取 「 主題 」 首頁:: 工作與專案 」 然後按一下 [顯示]。 如 Office 應用程式自動化的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
222101如何尋找並使用 Office 物件模型文件

屬性

文章編號: 178749 - 上次校閱: 2005年6月23日 - 版次: 4.3
這篇文章中的資訊適用於:
  • 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
關鍵字:?
kbmt kbautomation kbhowto kbinterop KB178749 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:178749
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