本文將告訴您,如何建置 Visual C++.NET 做為的是元件物件模型 (COM) 相容的應用程式的自動化用戶端的專案。本文中的範例會使用與類別包裝函式的 Microsoft 基礎類別 (MFC) 為 Office 元件。
下列步驟將告訴您,如何建置簡單的 「 自動化 」 用戶端。有此程序的三個主要步驟:
- 建立自動化用戶端。
- 加入程式碼來自動化 Microsoft Excel。
- 執行自動化用戶端。
您可以使用第一個步驟 ,來建立新的自動化用戶端,不論您使用的 「 自動化 」 伺服器。第二個步驟
Add Code to Automate Microsoft
Excel,是 「 自動化 」 伺服器特有的。
建立自動化用戶端
- 啟動 Microsoft Visual Studio.NET。在 [檔案] 功能表上按一下 [新增],然後按一下 [專案]。Visual C++ 專案] 類型從選取 MFC 應用程式,然後將其命名為專案 AutoProject。
- MFC 應用程式精靈出現按一下 應用程式類型、 將應用程式類型設定為 [對話方塊架構],然後再按一下 [完成]。
- 修改 [IDD_AUTOPROJECT_DIALOG] 對話方塊,如下所示:
- 移除 標籤 控制項 (IDC_STATIC)] 和 [取消] 按鈕 (IDCANCEL)。
- [確定] 按鈕的 ID 變更 IDRUN 」 及標題,以 [執行]。
- 建立類別包裝函式從型別程式庫為自動化伺服器,如下所示:
- 在 [方案總管] 中 AutoProject,] 上按一下滑鼠右鍵,然後再按一下 [加入類別]。
- 按一下 [從 Typelib MFC 類別,然後按一下 [開啟舊檔]。
- 按一下 [新增從類別: 登錄,並找到已註冊的型別程式庫進行您自動化伺服器。
為使本範例選取 Microsoft ExcelXP 或 [Microsoft Excel 9.0 類型庫] 的 Microsoft Excel 2000"Microsoft Excel 10.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();
- 新增的每個標頭檔案從介面型別程式庫的 「 自動化 」 伺服器中產生的包含指示詞。將指示詞的包含陳述式之後新增 Stdafx.h AutoProjectDlg.cpp 頂端。
本範例為新增為 _Application 介面產生 CApplication.h 標頭檔包含:
#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 資料庫 3.5 | DAO350.dll |
| Microsoft 文件夾 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 資料庫 3.51 | DAO360.dll |
| Microsoft 文件夾 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 圖表 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 圖表 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 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 辦公室 | C:\Program Files\Microsoft Office\Office12 |
預設位置為 Dao350.dll 和 Dao360.dll 是 C:\Program Files\Common Files\Microsoft Shared\Dao。
如需有關 Visual C++.NET 的更一般資訊,請參閱下列 Usenet 新聞群組]:
Microsoft.public.dotnet.languages.vc
(http://msdn.microsoft.com/newsgroups/default.aspx?query=Microsoft.public.dotnet.languages.vc+&dg=&cat=en-us-msdn&lang=en&cr=US&pt=&catlist=774F24A2-F71F-425F-AC2B-DC48AB0DA5C9&dglist=&ptlist=&exp=&sloc=en-us)
請瀏覽 Visual C++.NET 支援中心在下列 Microsoft 網站:
文章編號: 307473 - 上次校閱: 2007年4月18日 - 版次: 8.1
這篇文章中的資訊適用於:
- Microsoft Visual C++ .NET 2002 Standard Edition
- Microsoft Foundation Class Library 4.2
- Microsoft Office Professional 2007
- Microsoft Office Professional Edition 2003
- Microsoft Office XP Developer Edition
- Microsoft Office 2000 Developer Edition
- Microsoft Office 97 Developer Edition
| kbmt kbexpertiseinter kbautomation kbhowto kbnewsgrouplink KB307473 KbMtzh |
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:
307473
(http://support.microsoft.com/kb/307473/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。