UI 自动化规范

本主题概述了 Microsoft UI 自动化 规范,该规范构成了 Windows 实现UI 自动化的基础。 UI 自动化规范可以跨 Microsoft Windows 以外的平台提供支持。 有关详细信息,请参阅 UI 自动化 规范

本主题包含以下各节:

Introducton

UI 自动化规范提供对 Windows 桌面上的 UI 元素的灵活编程访问,使辅助技术产品(如屏幕阅读器)能够向最终用户提供有关 UI 的信息,并通过标准输入以外的其他方式操作 UI。

UI 自动化的范围比接口定义更广。 提供以下功能:

  • 一个对象模型和函数,使客户端应用程序能够轻松接收事件、检索属性值和操作 UI 元素。
  • 用于跨进程边界查找和提取的核心基础结构。
  • 一组接口,供提供程序表示 UI 元素的树结构、常规属性和功能。
  • 一个“控件类型”属性,它允许客户端和提供程序清楚地指示 UI 对象的通用属性、功能和结构。

UI 自动化通过以下方式改进了 Microsoft Active Accessibility:

  • 启用高效的进程外客户端,同时继续允许进程内访问。
  • 以允许客户端进程外的方式公开有关 UI 的详细信息。
  • 与 Microsoft Active Accessibility 共存并利用,而不继承其限制。 有关详细信息,请参阅 Microsoft Active Accessibility 和 UI 自动化比较
  • IAccessible 提供一个易于实现的替代项。

Windows 中 UI 自动化 规范的实现功能组件对象模型 (COM) 基于接口和托管接口。

UI 自动化 元素

UI 自动化将 UI 的每个部分作为自动化元素公开给客户端应用程序。 提供程序为每个元素提供属性值。 元素作为树结构公开,桌面作为根元素。

自动化元素公开它们所表示的 UI 元素的公共属性。 其中一个属性是控件类型,它描述其基本外观和功能 (例如按钮或检查框) 。

UI 自动化树

UI 自动化树表示整个 UI:根元素是当前桌面,子元素是应用程序窗口。 每个子元素都可以包含表示菜单、按钮、工具栏等的元素。 这些元素又可以包含列表项等元素,如下图所示。

显示 ui 自动化树的屏幕截图

请注意,UI 自动化树中同级姐妹的顺序非常重要。 在视觉上相邻的对象也应该在UI 自动化树中彼此相邻。

特定控件的UI 自动化提供程序支持在该控件的子元素之间导航。 但是,提供程序不关心这些控件子树之间的导航。 此导航由 UI 自动化核心通过默认窗口提供程序中的信息进行管理。

为了帮助客户端更有效地处理 UI 信息,框架支持自动化树的替代视图:原始视图、控件视图和内容视图。 如下表所示,筛选类型确定视图,客户端定义视图的范围。

自动化树 说明
原始视图 桌面是其根目录的自动化元素对象的完整树。
控件视图 原始视图的子集,在用户感知时紧密映射到 UI 结构。
内容视图 控件视图的子集,其中包含与用户最相关的内容,如下拉组合框中的值。

 

有关详细信息,请参阅UI 自动化树概述

UI 自动化属性

UI 自动化规范定义了两种类型的属性:自动化元素属性和控制模式属性。 自动化元素属性适用于大多数控件,提供有关元素的基本信息,例如其名称。 控件模式属性适用于控件模式,接下来将介绍这些模式。

与 Microsoft Active Accessibility 不同,每个 UI 自动化 属性都由 GUID 和编程名称标识,这使得新属性更易于引入。

有关更多信息,请参见 UI Automation Properties Overview

UI 自动化控件模式

控件模式描述自动化元素功能的特定方面。 例如,简单的“可单击”控件(如按钮或超链接)应支持 Invoke 控件模式来表示“单击”操作。

每个控件模式都是可能 UI 特性和函数的规范表示形式。 UI 自动化的当前实现定义了 22 种控制模式。 Windows 自动化 API 还可以支持自定义控件模式。 与 Microsoft Active Accessibility 角色或状态属性不同,一个自动化元素可以支持多个UI 自动化控件模式。

有关详细信息,请参阅 UI Automation Control Patterns Overview

UI 自动化控件类型

控件类型是一个自动化元素属性,用于指定元素表示的已知控件。 目前,UI 自动化定义了 38 种控件类型,包括 Button、CheckBox、ComboBox、DataGrid、Document、Hyperlink、Image、ToolTip、Tree 和 Window。

元素需要满足特定条件,包括特定的自动化树结构、属性值、控件模式和事件,然后才能将控件类型分配给元素。 但是,你并不局限于这些。 可以使用自定义模式和属性以及预定义的模式和属性来扩展控件。

预定义控件类型的总数明显低于 Microsoft Active Accessibility 对象角色,因为可以将UI 自动化控件模式组合在一起,以表达更大的功能集,而 Microsoft Active Accessibility 角色则不能。

有关详细信息,请参阅 UI Automation Control Types Overview

UI 自动化事件

UI 自动化事件通知应用程序对自动化元素的更改和使用操作。 有四种不同类型的UI 自动化事件,它们不一定意味着 UI 的视觉状态已更改。 UI 自动化 事件模型独立于 Windows 中的 WinEvent 框架,尽管 Windows 自动化 API 使UI 自动化事件可与 Microsoft Active Accessibility 框架互操作。

有关更多信息,请参见 UI Automation Events Overview

UI 自动化规范Windows 自动化 API 概述