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

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

2025-08-26通用術語506

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

自動化 (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 自動化)?概念、運作方式” 的相關文章

什麼是組織單位 (OU)?概念、怎麼運作

什麼是組織單位 (OU)?概念、怎麼運作

網路百科全書中組織單位 (OU) 的定義。什麼是組織單位 (OU)?組織單位是 Microsoft Windows Server Active Directory 中的一種容器物件,可以包含其他 Active Directory 物件。怎麼運作組織單位 (OU) 可以包...

什麼是RAID?概念、RAID 範例

什麼是RAID?概念、RAID 範例

RAID 是一種使用資料備援在磁碟子系統上實作容錯的技術。什麼是 RAID?RAID 代表獨立磁碟冗餘陣列,是一種透過使用軟體或使用單獨的硬體 RAID 儲存單元使用資料冗餘在磁碟子系統上實現容錯的技術。RAID 範例資料會以數種方式之一分散到磁碟機、稱為 RAID 層級、視所需的備援和效能層級而定...

什麼是令牌環(Token Ring)?概念、怎麼運作的

什麼是令牌環(Token Ring)?概念、怎麼運作的

網路百科全書中令牌環的定義。什麼是令牌環(代幣戒指)(在計算機網絡中)?Token Ring 是 IBM 開發的一種流行的局域網 (LAN) 技術,在許多商店中仍然擁有龐大的安裝基礎,但近年來已被不同形式的以太網大大超越。權杖環在 IEEE 802.5 規範中進行了標準化,該規範描述了配置為物理星形...

什麼是接地迴路?概念、運作方式

什麼是接地迴路?概念、運作方式

接地迴路是當網路的兩個或多個部分在不同點接地時產生的情況,導致連接的網路組件之間產生電壓差。什麼是接地迴路?網路中的接地迴路是當網路的兩個或多個部分在不同點接地時產生的情況,導致連接的網路組件之間產生電壓差。這些電壓差通常是由於不同位置接地電氣特性的不均勻性而發生的。接地迴路運作方式例如,假設兩台電...

什麼是手持裝置標記語言 (HDML)?概念、運作方式

什麼是手持裝置標記語言 (HDML)?概念、運作方式

手持設備標記語言 (HDML) 是一種簡單的語言,用於為小型顯示器手持設備創建類似超文本的內容。什麼是 HDML(手持設備標記語言)?一種以超文本標記語言 (HTML) 為模型的標記語言,針對個人數字助理 (PDA)、尋呼機和行動電話等手持信息設備的無線互聯網訪問進行了優化。這些設備的顯示器尺寸有限...

什麼是錨文本 (HTML)?概念、運作方式

什麼是錨文本 (HTML)?概念、運作方式

網路百科全書中錨文本 (HTML) 的定義。什麼是電腦網路中的錨文本?錨文本在超文本標記語言 (HTML) 中是超文本鏈接的源或目標。錨點可以是文字或圖形,並使用標籤形式<A ...>…</A>。錨標記是 HTML 的基礎,使連結文件的超文本概念成為可能。錨文本 (HTML)...