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