當前位置:首頁 > 通用術語 > 什麼是自動化 (OLE 自動化)?概念、運作方式

什麼是自動化 (OLE 自動化)?概念、運作方式

2025-08-26通用術語354

自動化可讓一個應用程式操作在另一個應用程式中實作的物件,或公開物件以便可以操作它們。

自動化 (OLE 自動化)

索引(在此頁面中)

  • 什麼是自動化(OLE Automation)

  • 自動化伺服器

    • 自動化伺服器範例

    • 支援自動化伺服器

  • 自動化用戶端

    • 在自動化用戶端中處理事件

    • 自動化用戶端:使用類型程式庫

    • 如何從類型庫創建分派類

  • 外部參考

什麼是 OLE 自動化?

一種 Microsoft 技術,可讓應用程式將其功能公開給其他應用程式。自動化 (先前稱為 OLE 自動化) 是以元件物件模型 (COM) 為基礎,並允許元件的執行階段繫結。自動化僅由腳本語言使用,例如 Microsoft Visual Basic for Applications (VBA)、Microsoft Visual Basic Scripting Edition (VBScript) 和 Microsoft JScript,以存取支援自動化的 COM 元件。

自動化的優點是它允許各種語言在運行時間訪問 COM 組件。自動化的缺點是速度很慢,而且無法執行編譯階段資料類型檢查。

透過自動化公開其功能的應用程式稱為自動化伺服器。透過自動化與伺服器通訊的應用程式稱為自動化用戶端。

自動化伺服器

自動化伺服器是將可程式化物件 (稱為自動化物件) 公開給其他應用程式 (稱為自動化用戶端) 的應用程式。自動化伺服器有時稱為自動化元件。

公開自動化物件可讓用戶端直接存取伺服器提供的物件和功能,以自動化特定程序。當應用程式提供對其他應用程式有用的功能時,以這種方式公開物件是有益的。例如,文字處理器可能會公開其拼字檢查功能,以便其他程式可以使用它。因此,物件的公開可讓廠商使用其他應用程式的現成功能來改善其應用程式的功能。

這些自動化物件具有屬性和方法作為其外部介面。屬性是自動化物件的具名屬性。屬性就像 C++ 類別的資料成員。方法是處理自動化物件的函式。方法就像 C++ 類別的公用成員函式。

自動化伺服器範例

以下是自動化伺服器的範例:一個文字處理程序,可以公開其拼字檢查功能,以便自動化控制器可以存取它們。這容許其他程式 (自動化用戶端或控制器) 使用一個程式 (自動化伺服器) 的功能。

支援自動化伺服器

Visual C++ 和 MFC 架構為自動化伺服器提供廣泛的支援。它們會處理製作自動化伺服器所涉及的大部分額外負荷,因此您可以將精力集中在應用程式的功能上。

架構支援自動化的主要機制是分派對應,這是一組宏,可展開為公開 OLE 方法和屬性所需的宣告和呼叫。一般分派對應如下所示:C++複製

BEGIN_DISPATCH_MAP(CMyServerDoc, COleServerDoc)
DISP_PROPERTY(CMyServerDoc, "Msg", m_strMsg, VT_BSTR)
DISP_FUNCTION(CMyServerDoc, "SetDirty", SetDirty, VT_EMPTY, VTS_I4)
END_DISPATCH_MAP()

「類別精靈」和「類別檢視」可協助維護調度地圖。當您將新方法或屬性新增至類別時,Visual Studio 會新增對應或巨集,其中包含參數,指出類別名稱、方法或屬性的外部和內部名稱,以及資料類型。DISP_FUNCTIONDISP_PROPERTY

[新增類別] 對話方塊也會簡化自動化類別的宣告,以及其屬性和作業的管理。當您使用 [新增類別] 對話方塊將類別新增至專案時,您可以指定其基底類別。如果基類允許自動化,則 [新增類別] 對話方塊會顯示您用來指定新類別是否應該支援自動化、是否為「OLE 可建立」 (也就是,是否可以根據 COM 用戶端的要求建立類別的物件) ,以及 COM 用戶端要使用的外部名稱。

然後,[新增類別] 對話方塊會建立類別宣告,包括您指定之 OLE 功能的適當巨集。它還添加了用於實現類別成員函數的骨架代碼。

MFC 應用程式精靈可簡化讓自動化伺服器應用程式啟動所涉及的步驟。如果您從 [進階功能] 頁面選取 [自動化] 核取方塊,MFC 應用程式精靈會將註冊自動化物件並將應用程式作為自動化伺服器執行所需的呼叫新增至應用程式的函式。


自動化用戶端

自動化用戶端是存取自動化伺服器功能的用戶端。自動化 (OLE 自動化) 是一個應用程式操作另一個應用程式的公開物件 (屬性和方法) 的一種方式。

自動化控制器是用戶端應用程式,可操作另一個應用程式的公開物件,稱為自動化伺服器。自動化控制器的範例包括 Microsoft Word、Microsoft Excel 和 Microsoft Visual Basic。


自動化用戶端有兩種類型:

  • 在編譯階段具有連結至其自動化伺服器內容及方法的靜態資訊的用戶端。

  • 在執行時期動態取得自動化伺服器內容及方法相關資訊的用戶端。這些用戶端會透過查詢自動化伺服器的 IDispatch 介面來執行此動作。

第二種用戶端會藉由查詢 OLE 系統的機制來取得伺服器方法和屬性的相關資訊。雖然它足以用於動態用戶端,但很難用於靜態用戶端,其中所驅動的物件必須在編譯階段已知。針對靜態系結用戶端,Microsoft Foundation 類別會提供 COleDispatchDriver 類別。IDispatchIDispatch

靜態繫結用戶端會使用與用戶端應用程式靜態連結的 Proxy 類別。這個類別提供伺服器應用程式屬性和作業的類型安全 C++ 封裝。


此類別提供自動化用戶端的主要支援。使用「新增項目」對話框,您可以建立衍生自 的類別。COleDispatchDriverCOleDispatchDriver

然後,您可以指定描述伺服器應用程式物件屬性和函式的類型程式庫檔案。[新增專案] 對話方塊會讀取此檔案,並建立衍生類別,其中包含您的應用程式可以呼叫的成員函式,以類型安全的方式存取 C++ 中的伺服器應用程式物件。繼承自的其他功能可簡化呼叫適當自動化伺服器的程序。COleDispatchDriverCOleDispatchDriver

在自動化用戶端中處理事件

如果您想要處理自動化用戶端中的事件,您必須新增接收介面。MFC 提供精靈支援來新增 ActiveX 控制項的接收介面,但不支援其他 COM 伺服器。

自動化用戶端:使用類型程式庫

如果用戶端要操作伺服器的物件,自動化用戶端必須具有伺服器物件屬性和方法的相關資訊。屬性具有資料類型;方法通常會傳回值並接受參數。用戶端需要所有這些資料類型的相關資訊,才能靜態繫結至伺服器物件類型。

此類型資訊可以透過多種方式為人所知。建議的方法是建立類型程式庫。

如需 MkTypLib 的相關資訊,請參閱 Windows SDK。


Visual C++ 可以讀取類型程式庫檔案,並建立衍生自 COleDispatchDriver 的分派類別。該類別的物件具有複製伺服器物件的屬性和作業。您的應用程式會呼叫此物件的屬性和作業,以及繼承自的功能會將這些呼叫路由傳送至 OLE 系統,而 OLE 系統接著會將它們路由傳送至伺服器物件。COleDispatchDriver

如果您在建立專案時選擇包含自動化,Visual C++ 會自動為您維護此類型程式庫檔案。在每個組建中,將使用 MkTypLib 建置 .tlb 檔案。

如何從類型庫 (.tlb) 檔案建立分派類別

  1. 在 [類別檢視] 或 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [新增],然後按一下捷徑功能表上的 [新增類別]。

  2. 在 [ 新增類別 ] 對話方塊中,選取左窗格中的 Visual C++/MFC 資料夾。從右窗格中選取 [來自 TypeLib 的 MFC 類別] 圖示,然後按一下 [開啟]。

  3. 在「從 Typelib 精靈新增類別」對話方塊中,從「可用的類型程式庫」下拉式清單中選取類型程式庫。「介面」方塊會顯示所選類型資源庫可用的介面。若要選取介面,請按兩下它們或按一下 新增 按鈕。當您這樣做時,分派類別的名稱將出現在 產生的類別 方塊中。您可以在方塊中編輯類別名稱。[檔案] 方塊會顯示將在其中宣告類別的檔案。(您也可以編輯此檔案名稱)。如果您希望將標頭和實作資訊寫入現有檔案或專案目錄以外的目錄中,您也可以使用瀏覽按鈕來選取其他檔案。Class

  4. 按一下 [完成]。然後,精靈會使用指定的類別和檔名來撰寫分派類別的程式碼。

“什麼是自動化 (OLE 自動化)?概念、運作方式” 的相關文章

什麼是Microsoft 系統管理伺服器 (SMS)?概念、運作方式、通用術語

什麼是Microsoft 系統管理伺服器 (SMS)?概念、運作方式、通用術語

網路百科全書中 Microsoft 系統管理伺服器 (SMS) 的定義。什麼是 Microsoft 系統管理伺服器 (SMS)?SMS 是用於管理組織網路電腦的 Microsoft BackOffice 應用程式。Microsoft 系統管理伺服器 (SMS) 可讓網路管理員:管理其硬體和軟體資產從...

什麼是頻外管理 (OBM)?概念、怎麼運作的

什麼是頻外管理 (OBM)?概念、怎麼運作的

網路百科全書中頻外管理 (OBM) 的定義。什麼是頻外管理 (OBM)?OBM 代表帶外管理,是一種使用輔助串行通信鏈路遠程管理網絡的廣域網 (WAN) 電信組件的方法。這些裝置通常是路由器、交換器或通道服務單元/資料服務單元 (CSU/DSU),用於建立和維護與公司網路的 WAN 連結。可以在帶外...

什麼是G.Lite?概念、怎麼運作的

什麼是G.Lite?概念、怎麼運作的

G.Lite 是非對稱數字用戶線 (ADSL) 的變體,旨在家庭互聯網訪問。繼續閱讀以獲取詳細信息。什麼是 G.Lite?G.Lite 是非對稱數字用戶線 (ADSL) 的變體,旨在家庭互聯網訪問。G.Lite 的下行速率通常高達 1.5 Mbps,上行速率高達 384 Kbps,具體取決於實施。G...

什麼是Deamon ?概念、運作方式

什麼是Deamon ?概念、運作方式

Deamon 是一個與 UNIX 操作系統關聯的程序,它在後台運行並在沒有用戶煽動的情況下執行某些任務。什麼是 Deamon ?與 UNIX 作業系統相關聯的程式,在背景執行,無需使用者指示即可執行某些作業。常駐程式的範例是 telnet 常駐程式,它在背景持續執行,等待來自&n...

什麼是服務品質 (QoS)?概念、運作方式

什麼是服務品質 (QoS)?概念、運作方式

網路百科全書中服務品質 (QoS) 的定義。什麼是服務品質 (QoS)?一般來說,QoS 是具有可預測延遲和資料遺失的任何網路技術。更具體地說,是允許為通過網路傳輸的不同流量流定義絕對或相對效能要求的任何機制。換句話說,服務品質 (QoS) 網路可以保證特定路徑、連線或流量類型的一定輸送量。這使得確...

什麼是Alpha 平台 (DEC)?概念、運作方式

什麼是Alpha 平台 (DEC)?概念、運作方式

網絡百科全書中阿爾法平台的定義。什麼是 Alpha 平台?處理器基於DEC Alpha RISC架構微處理器的計算機平台。Alpha 是 Microsoft Windows NT 支持的兩個處理器平台之一(另一個是英特爾的 x86 平台)。DEC Alpha 21164 處理器Alpha...