備註
本檔適用於想要使用 System.Windows.Automation 命名空間中定義的受控UI自動化類別的 .NET Framework 開發人員。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:使用者介面自動化。
使用者介面自動化提供者可讓控件與UI自動化用戶端應用程式通訊。 一般而言,使用者介面 (UI) 中的每個控件或其他相異項目都會由提供者表示。 提供者會公開 元素的相關信息,並選擇性地實作控件模式,讓用戶端應用程式能夠與控件互動。
用戶端應用程式通常不需要直接使用提供者。 使用 Win32、Windows Forms 或 Windows Presentation Foundation (WPF) 架構的應用程式中,大部分的標準控件都會自動公開給 UI 自動化系統。 實作自定義控件的應用程式也可以實作這些控制件的 UI 自動化提供者,用戶端應用程式不需要採取任何特殊步驟來存取它們。
本主題概述控件開發人員如何實作 UI 自動化提供者,特別是針對 Windows Forms 和 Win32 視窗中的控件。
提供者類型
使用者介面自動化提供者分為兩個類別:用戶端提供者和伺服器端提供者。
用戶端提供者
客戶端提供者是由 UI Automation 客戶端實作,以便與不支持或僅部分支持 "UI Automation" 的應用程式進行通訊。 用戶端提供者通常會透過傳送和接收 Windows 訊息,跨進程界限與伺服器通訊。
由於 Win32、Windows Forms 或 WPF 應用程式中控件的 UI 自動化提供者會作為作系統的一部分提供,因此用戶端應用程式很少必須實作自己的提供者,而且此概觀不會進一步涵蓋它們。
伺服器端提供者
伺服器端提供者是由自定義控件或以 Win32、Windows Forms 或 WPF 以外的 UI 架構為基礎的應用程式所實作。
伺服器端提供者會透過向UI自動化核心系統公開介面,以跨進程界限與用戶端應用程式通訊,進而提供來自用戶端的要求。
UI 自動化提供者概念
本節提供您需要瞭解的一些重要概念的簡短說明,以實作 UI 自動化提供者。
元素
使用者介面自動化元素是可供UI自動化客戶端看見的使用者介面(UI)的一部分。 範例包括應用程式視窗、窗格、按鈕、工具提示、清單和清單項目。
導航
使用者介面自動化元素會以UI自動化樹狀結構的形式公開給用戶端。 使用者介面自動化會藉由從一個元素巡覽到另一個元素來建構樹狀結構。 導覽是由提供者為每個元素啟用,每個元素可能指向父元素、兄弟元素和子元素。
如需UI自動化樹狀結構之客戶端檢視的詳細資訊,請參閱 UI自動化樹狀結構概觀。
瀏覽次數
用戶端可以在三個主要檢視中看到UI自動化樹狀結構,如下表所示。
| 查看 | 說明 |
|---|---|
| 原始檢視 | 包含所有元素。 |
| 控件檢視 | 包含控制元件的元素。 |
| 內容檢視 | 包含具有內容的元素。 |
如需UI自動化樹狀結構之客戶端檢視的詳細資訊,請參閱 UI自動化樹狀結構概觀。
提供者實作有責任將元素定義為內容元素或控制元素。 控件元素不一定也是內容元素,但所有內容元素都是控件元素。
框架
架構是一個元件,可管理螢幕區域中的子控件、點擊測試及轉譯。 例如,通常稱為 HWND 的 Win32 視窗可作為包含多個 UI 自動化元素的架構,例如功能表欄、狀態列和按鈕。
Win32 容器控制項,例如列表框和樹狀視圖,通常視為架構,因為它們包含自己的程式碼,用於渲染子項目並對其進行點擊測試。 相較之下,WPF 列表框不是一個框架,因為渲染和點擊測試由所包含的 WPF 視窗負責處理。
應用程式中的UI可以由不同的架構所組成。 例如,HWND 應用程式視窗可能包含動態 HTML (DHTML),而動態 HTML 則包含元件,例如 HWND 中的下拉式方塊。
碎片
片段是特定架構中元素的完整子樹。 子樹根節點的元素稱為片段根節點。 片段根沒有父代,但通常裝載在 Win32 視窗(HWND)等其他框架中。
主持人 / 主辦方
每個片段的根節點都必須裝載在元素中,通常是 Win32 視窗(HWND)。 例外狀況是桌面,它未裝載於任何其他元素中。 自定義控制元件的主機是控制項本身的 HWND,而不是應用程式視窗或任何其他可能包含最上層控制件群組的視窗。
片段的主機在提供UI自動化服務方面扮演著重要的角色。 它可讓您流覽至片段根目錄,並提供一些預設屬性,讓自定義提供者不需要實作它們。