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

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

2025-08-26通用術語218

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

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

什麼是RAID?概念、RAID 範例

什麼是RAID?概念、RAID 範例

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

什麼是通用分組無線電服務 (GPRS)?概念、怎麼運作的

什麼是通用分組無線電服務 (GPRS)?概念、怎麼運作的

網絡百科全書中通用分組無線服務 (GPRS) 的定義。什麼是GPRS(通用分組無線服務)?GPRS是時分多址(TDMA)蜂窩電話系統的升級版。通用分組無線電服務(GPRS)使用分組交換代替TDMA系統現有的電路交換技術,以更有效地利用可用帶寬。探地雷達GPRS為用戶提供多達八個獨立的14.4-Kbp...

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

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

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

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

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

網路百科全書中 vCalendar 的定義。什麼是 vCalendar?vCalendar 是一種網際網路通訊協定,用於在不同平台上執行的排程程式之間進行互通性。vCalendar 允許個人資料交換 (PDI) 程式透過網際網路交換排程資訊,以預訂會議、排定活動等。vCalendar 標準定義了透過...

什麼是代理程式 (SNMP)?概念、運作方式

什麼是代理程式 (SNMP)?概念、運作方式

網路百科全書中AGENT的定義。什麼是代理程式 SNMPSNMP中的代理程式是一種簡單的網路管理協定客戶端軟體,在集線器、路由器或其他網路元件上運行。代理程式會收集 TCP/IP 統計資料及條件的相關資訊,並可在向 SNMP 管理系統要求時提供此資訊。代理程式還可以在發生設陷時向管理系統發...

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

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

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