UI 自動化概觀
Microsoft UI Automation 是 Windows 的輔助性架構。 它提供桌面上大部分UI元素的程式化存取。 它使輔助技術產品(例如螢幕助讀程式)能向終端使用者提供有關使用者介面的資訊,並透過非標準輸入的方法操作使用者介面。 使用者介面自動化也允許自動化測試腳本與UI互動。
在 Windows XP 中,UI 自動化首先作為 Microsoft .NET Framework 的一部分被提供。 雖然當時也發行了 Unmanaged C++ API,但用戶端函式的實用性會因為互作性問題而受到限制。 針對 Windows 7,API 已在元件物件模型 (COM) 中重寫。
注意
雖然舊版 UI Automation 中引進的函式庫仍有文件記載,但不應在新應用程式中使用。
使用者介面自動化用戶端應用程式可以被撰寫,以確保它們能夠在多個 Microsoft Windows 控制框架上運行。 使用者介面自動化核心隱藏了在不同UI組件所依賴的架構中存在的任何差異。 例如,Windows Presentation Foundation (WPF) 按鈕的 Content 屬性、Microsoft Win32 按鈕的 Caption 属性,以及 HTML 影像的 ALT 属性全都對應至 UI 自動化檢視中的單一屬性,Name。
使用者介面自動化在 Windows XP、Windows Server 2003 及更新版本的作系統中提供完整的功能。
使用者介面自動化提供者是實作控件 UI 自動化支援的元件,可透過內建橋接服務,為Microsoft Active Accessibility 用戶端應用程式提供一些支援。
注意
使用者介面自動化不會透過 執行身分 命令,啟用由不同使用者啟動的進程之間的通訊。
本主題包含下列各節。
UI 自動化元件
UI 自動化有四個主要元件,如下表所示。
元件 | 描述 |
---|---|
提供者 API | 由UI自動化提供者實作的一組 COM 介面。 使用者介面自動化提供者是物件,可提供UI元素的相關信息,並回應程式設計輸入。 |
用戶端 API | 一組 COM 介面,可讓用戶端應用程式取得 UI 的相關信息,並將輸入傳送至控件。
注意:已被取代的控件模式函式 和 已被取代的節點函式 中所述的函式已被取代。 相反地,客戶端應用程式應該使用 UI 自動化元素介面中所述的 UI 自動化 COM 介面。 |
UIAutomationCore.dll | 執行時期程式庫,有時稱為使用者介面自動化核心,負責處理提供者和客戶端之間的通訊。 |
Oleacc.dll | Microsoft Active Accessibility 和代理物件的執行階段庫。 程式庫也提供由 Microsoft 使用的 Active Accessibility 到使用者介面自動化 Proxy 的 Proxy 物件,以支援 Win32 控制項。 |
使用UI自動化的方式有兩種:使用提供者 API 建立自定義控件的支援,以及建立使用UI自動化核心進行通訊的用戶端應用程式,以及擷取 UI 元素的相關信息。 根據您的專注點,您應該參考文件的不同部分。 如果您需要建立自訂控制件的支援,請參閱 UI 自動化提供者程式設計人員指南。 如果您需要與 UI 元素通訊或擷取相關信息,請參閱 使用者介面自動化用戶端程式設計人員指南。
UI 自動化頭檔
UI 自動化 API 定義於數個不同的 C/C++頭檔,這些頭檔隨附於 Windows 軟體開發工具包 (SDK) 中。 下表說明 UI 自動化標頭檔:
標頭檔案 | 描述 |
---|---|
UIAutomationClient.h | 定義使用者介面自動化客戶端所使用的介面和相關程式設計元素。 |
UIAutomationCore.h | 定義 UI 自動化提供者所使用的介面和相關程式設計元素。 |
UIAutomationCoreApi.h | 定義UI自動化用戶端和提供者所使用的一般常數、GUID、資料類型和結構。 它也包含已淘汰節點和控制模式函式的定義。 |
UIAutomation.h | 包含所有其他 UI 自動化頭檔。 由於大部分的 UI 自動化應用程式都需要來自所有 UI 自動化頭檔案的元素,因此最好在 UI 自動化應用程式專案中將 UIAutomation.h 包含在其中,而不是單獨包含每個檔案。 |
如果您要開發使用UI自動化 API 的應用程式,您應該在專案中包含UIAutomation.h。 如果您的應用程式支援 Microsoft Active Accessibility,請包含 Oleacc.h 頭檔。 使用 GUID 的 UI 自動化應用程式也需要 Initguid.h 頭檔。 如有需要,應該在UIAutomation.h之前包含Initguid.h。
UI 自動化模型
使用者介面自動化將介面的每個元素,透過 IUIAutomationElement 介面,作為物件公開給用戶端應用程式。 元素包含在樹狀結構中,桌面作為根元素。 用戶端可以將樹狀結構的原始檢視篩選為控件檢視或內容檢視。 使用 Windows SDK 隨附 檢查 應用程式,即可輕鬆看到結構的這些標準檢視。 應用程式也可以建立自定義檢視。
使用者介面自動化專案會公開它所代表之控件或 UI 元素的屬性。 其中一個屬性是控件類型,它會將控件或 UI 元素的基本外觀和功能定義為單一可辨識實體,例如按鈕或複選框。 如需控制項類型的詳細資訊,請參閱 UI 自動化控制項類型概觀。
此外,UI 自動化元素也會公開一或多個控件模式。 控制項模式提供一組特定控制項類型特有的屬性。 控制模式還會公開方法,使客戶端應用程式能獲取元素的更多資訊並向元素提供輸入。 如需控制樣式的詳細資訊,請參閱 UI 自動化控制樣式概觀。
注意
控制件類型和控制項模式之間沒有一對一的對應。 控制項模式可由多個控件類型支援,而控件可能支援多個控制項模式,每個模式都會公開其行為的不同層面。 例如,組合框至少有兩個控制模式:一個代表其展開和折疊的能力,另一個代表選取機制。 不過,控件只能顯示單一控件類型。
使用者介面自動化會透過事件將資訊提供給用戶端應用程式。 不同於 WinEvents,UI 自動化事件並非以廣播機制為基礎。 使用者介面自動化客戶端會註冊特定事件通知,並可要求特定屬性和控制模式資訊傳遞至其事件處理程式。 此外,UI 自動化事件中包含對引發該事件之元素的參考。 為了改善效能,提供者可以根據是否有任何用戶端正在接聽來選擇性地引發事件。 如需事件的詳細資訊,請參閱 UI 自動化事件概觀。