比較 Microsoft Active Accessibility 和 消費者介面自動化

Windows 自動化 API 包含兩種技術:Microsoft Active Accessibility 和 Microsoft 消費者介面自動化。 Microsoft Active Accessibility 是 Windows 95 平臺增益集引進的舊版協助工具技術,而消費者介面自動化是較新的、更有能力的技術,可克服 Microsoft Active Accessibility 固有的限制。

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

基本設計原則

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

Microsoft Active Accessibility 和 消費者介面自動化會將 UI 物件模型公開為階層式樹狀結構,其根目錄位於桌面。 Microsoft Active Accessibility 會將個別 UI 元素表示為 可存取的物件 ,消費者介面自動化將其表示為 自動化元素 。 這兩者都會將協助工具工具或軟體自動化程式稱為 用戶端 。 不過,Microsoft Active Accessibility 是指應用程式或控制項提供協助工具 作為伺服器的 UI,而消費者介面自動化將此稱為 提供者

屬性和控制項模式

Microsoft Active Accessibility 提供單一元件物件模型 (COM) 介面,其中包含一組固定的小型屬性。 消費者介面自動化提供一組更豐富的屬性,以及一組稱為 控制項模式 的擴充介面,以 Microsoft Active Accessibility 無法的方式操作可存取的物件。

如需詳細資訊,請參閱 消費者介面自動化屬性概觀 消費者介面自動化控制項模式概觀

MSAA 角色和消費者介面自動化控制項模式

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

物件模型導覽

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

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

物件模型擴充性

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

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

從 MSAA 轉換

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

選擇 Microsoft Active Accessibility、消費者介面自動化 或 IAccessibleEx

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

新的應用程式和控制項

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

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

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

現有的 Microsoft Active Accessibility 實作

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

  • Microsoft Active Accessibility 伺服器可存取物件的階層架構必須組織良好且無錯誤。 IAccessibleEx 無法修正現有可存取物件階層的問題。
  • 您的 IAccessibleEx 實作必須符合 Microsoft Active Accessibility 規格和消費者介面自動化規格。 Microsoft 提供一組工具來驗證這兩個規格的合規性。 如需詳細資訊,請參閱 測試協助工具

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

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

Windows 自動化 API 概觀

Microsoft Active Accessibility

UI 自動化

IAccessibleEx 介面