共用方式為


比較Microsoft使用中輔助功能和UI自動化

Windows 自動化 API 包含兩種技術:Microsoft Active Accessibility 和 Microsoft UI Automation。 Microsoft Active Accessibility 是作為 Windows 95 平臺載入巨集引進的舊版輔助功能技術,而 UI 自動化是較新的、更有能力的技術,可克服Microsoft Active Accessibility 固有的限制。

本主題摘要說明 Microsoft Active Accessibility 與 UI 自動化之間的主要差異。 其中包含下列各節:

基本設計原則

雖然Microsoft Active Accessibility 和UI自動化是兩種不同的技術,但基本設計原則很類似。 這兩種技術的目的是公開 Windows 應用程式中所用 UI 元素的豐富資訊。 輔助功能工具的開發人員可以使用這項資訊來建立軟體,讓 Windows 上執行的應用程式更容易存取具有視覺、聽力或動作障礙的人員。

Microsoft Active Accessibility 和 UI Automation 都會將 UI 物件模型公開為階層式樹狀結構,其根目錄在桌面上。 Microsoft Active Accessibility 會將個別的 UI 元素表示為 可存取物件,而 UI 自動化會將它們表示為 自動化專案。 這兩者都會將輔助功能工具或軟體自動化程式稱為 用戶端。 不過,Microsoft使用中輔助功能是指應用程式或控件,提供輔助功能作為 伺服器,而使用者介面自動化則將此稱為 提供者

屬性和控件模式

Microsoft Active Accessibility 提供具有固定、小型屬性集的單一元件物件模型 (COM) 介面。 UI 自動化提供一組更豐富的屬性,以及一組稱為 控件模式的擴充介面, 以無法Microsoft Active Accessibility 的方式作可存取的物件。

如需詳細資訊,請參閱 UI 自動化屬性概觀UI 自動化控制樣式概觀

MSAA 角色和UI自動化控制件模式

Microsoft設計了與 Windows 95 相同的Microsoft Active Accessibility 物件模型。 此模型是以十年前定義的「角色」為基礎,您無法支援新的UI行為,或將兩個或多個角色合併在一起。 例如,沒有文字物件模型可協助輔助技術處理複雜的 Web 內容。 使用者介面自動化藉由引進可讓物件支援多個角色的控件模式來克服這些限制,而 UI 自動化 文字 控件模式提供完整的文字物件模型。

物件模型導覽

Microsoft Active Accessibility 的另一個限制包括瀏覽物件模型。 Microsoft Active Accessibility 會將 UI 表示為可存取物件的階層。 用戶端會使用可從可存取物件取得的介面和方法,從一個可存取的物件巡覽至另一個可存取物件。 伺服器可以使用 IAccessible 介面的屬性,或標準 IEnumVARIANT COM 介面,公開可存取對象的子系。 不過,客戶端必須能夠處理任何伺服器的這兩種方法。 此模棱兩可表示用戶端實作者的額外工作,以及伺服器實作者的可存取物件模型中斷。

UI 自動化會將UI表示為自動化專案的階層式樹狀結構,並提供單一介面來巡覽樹狀結構。 用戶端可以藉由範圍和篩選來自定義樹狀結構中的元素檢視。

物件模型擴充性

Microsoft Active Accessibility 屬性和函式無法擴充,而不需要中斷或變更 IAccessible COM 介面規格。 結果是無法透過物件模型公開新的控件行為;它通常是靜態的。

透過UI自動化,隨著新的UI元素的建立,應用程式開發人員可以引進自定義屬性、控件模式和事件來描述新元素。 如需詳細資訊,請參閱 自訂屬性、事件和控件模式

從 MSAA 轉換

Windows 自動化 API 架構支援從 Microsoft Active Accessibility 伺服器轉換至 UI 自動化提供者。 IAccessibleEx 介面可支援將特定 UI 自動化屬性和控制模式新增至舊版 Microsoft Active Accessibility 伺服器,而不需要重寫整個實作。 IAccessibleEx 介面也允許使用中輔助功能用戶端直接存取 UI 自動化提供者介面,而不是透過 UI 自動化用戶端介面進行進程Microsoft。 如需詳細資訊,請參閱 IAccessibleEx 介面

選擇 Microsoft Active Accessibility、UI Automation 或 IAccessibleEx

本節可協助您判斷要使用哪些 Windows 自動化 API 解決方案來實作輔助技術產品,或讓您的應用程式可供輔助技術產品存取。

新的應用程式和控制件

如果您要開發新的應用程式或控件,Microsoft建議使用UI自動化。 雖然Microsoft使用中輔助功能在短期內更容易實作,但這項技術固有的限制,例如其過時的物件模型,以及無法支援新的UI行為或合併角色,使得它長期更加困難和昂貴。 引進新控件時,這些限制變得特別明顯。

使用者介面自動化物件模型更容易使用,而且比使用中輔助功能Microsoft更靈活。 使用者介面自動化元素反映使用者介面的演進,開發人員可以定義自定義UI自動化控制項模式、屬性和事件。

Microsoft作用中輔助功能通常會緩慢地執行,供進程用盡的客戶端執行。 為了改善效能,輔助功能工具程序的開發人員通常會選擇在目標應用程式程式中連結並執行其程式:極其困難且有風險的方法。 使用者介面自動化更容易為跨進程用戶端實作,並提供更佳的效能和可靠性。

現有的Microsoft使用中輔助功能實作

如果您要更新以 Microsoft Active Accessibility 為基礎的現有應用程式或控件,請考慮實作 IAccessibleEx 介面來新增對使用者介面自動化的支援。 首先,請確定您的應用程式或控件符合下列需求:

  • 基準Microsoft使用中輔助功能伺服器的無障礙物件階層必須組織良好且無錯誤。 IAccessibleEx 無法修正現有可存取物件階層的問題。
  • 您的 IAccessibleEx 實作必須符合Microsoft Active Accessibility 規格和 UI 自動化規格。 Microsoft提供一組工具來驗證這兩個規格的合規性。 如需詳細資訊,請參閱 輔助功能測試

如果不符合上述任一需求,請考慮以原生方式實作UI自動化。 如有必要,您可以將舊版Microsoft Active Accessibility 伺服器實作保留回溯相容性。 從使用者介面自動化客戶端的觀點來看,使用者介面自動化提供者 Microsoft與實作 IAccessibleEx 的作用中輔助功能伺服器之間並無任何差異。

如需詳細資訊,請參閱 IAccessibleEx 介面

Windows 自動化 API 概觀

Microsoft Active Accessibility

UI 自動化

IAccessibleEx 介面