UI 自动化概述

Microsoft UI 自动化是适用于 Windows 的辅助功能框架。 它提供对桌面上大多数 UI 元素的编程访问。 它使辅助技术产品(如屏幕阅读器)能够向最终用户提供有关 UI 的信息,并通过标准输入以外的方式操作 UI。 UI 自动化还使自动测试脚本能够与 UI 交互。

UI 自动化作为 Microsoft .NET Framework的一部分在 Windows XP 中首次提供。 尽管当时还发布了非托管 C++ API,但由于互操作性问题,客户端函数的有用性受到限制。 对于 Windows 7,API 已在组件对象模型 (COM) 中重写。

注意

尽管仍记录了早期版本的 UI 自动化中引入的库函数,但不应在新应用程序中使用它们。

可以编写 UI 自动化客户端应用程序,确保它们适用于多个 Microsoft Windows 控件框架。 UI 自动化核心掩盖了作为 UI 各个部分基础的框架中的任何差异。 例如,Windows Presentation Foundation (WPF) 按钮的 Content 属性、Microsoft Win32 按钮的 Caption 属性和 HTML 图像的 Alt 属性都映射到 UI 自动化视图中的单个属性 Name

UI 自动化在 Windows XP、Windows Server 2003 及更高版本的操作系统中提供完整功能。

UI 自动化提供程序是在控件上实现 UI 自动化支持的组件,并通过内置的桥接服务为 Microsoft Active Accessibility 客户端应用程序提供一些支持。

注意

UI 自动化不启用不同用户通过 “运行方式” 命令启动的进程之间的通信。

本主题包含以下各节:

UI 自动化组件

如下表中所示,UI 自动化有四个主要组件。

组件 说明
提供程序 API 由 UI 自动化提供程序实现的一组 COM 接口。 UI 自动化提供程序是提供有关 UI 元素的信息并响应编程输入的对象。
客户端 API 一组 COM 接口,使客户端应用程序能够获取有关 UI 的信息并将输入发送到控件。 注意: 已弃 用的控件模式函数 和已 弃用的节点函数 中所述的函数。 相反,客户端应用程序应使用客户端的 UI 自动化元素接口中所述 的 UI 自动化 COM 接口
UIAutomationCore.dll 运行时库(有时称为 UI 自动化核心),用于处理提供程序和客户端之间的通信。
Oleacc.dll Microsoft Active Accessibility 和代理对象的运行时库。 该库还提供 Microsoft Microsoft Active Accessibility 对 UI 自动化代理使用的代理对象,以支持 Win32 控件。

使用 UI 自动化有两种方法:使用提供程序 API 创建对自定义控件的支持,以及创建使用 UI 自动化核心来与 UI 元素通信并检索有关 UI 元素的信息的客户端应用程序。 具体取决于侧重点,你应参考文档中的其他部分。 如果需要创建自定义控件的支持,请参阅 UI 自动化提供程序程序员指南。 如果需要与 UI 元素通信或检索有关 UI 元素的信息,请参阅 UI 自动化客户端程序员指南

UI 自动化头文件

UI 自动化 API 在 Windows 软件开发工具包 (SDK) 附带的多个不同 C/C++ 头文件中定义。 下表描述了 UI 自动化头文件:

头文件 说明
UIAutomationClient.h 定义 UI 自动化客户端使用的接口和相关编程元素。
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 自动化模型

UI 自动化将 UI 的每个元素作为 由 IUIAutomationElement 接口表示的对象公开给客户端应用程序。 元素包含在树状结构,而桌面作为根元素。 客户端可将树的原始视图筛选为控件视图或内容视图。 通过使用 Windows SDK 附带的 检查 应用程序,可以轻松查看结构的这些标准视图。 应用程序还可以创建自定义视图。

UI 自动化元素公开它所表示的控件或 UI 元素的属性。 其中一个属性是控件类型,它将控件或 UI 元素的基本外观和功能定义为单个可识别实体,例如按钮或检查框。 有关控件类型的详细信息,请参阅 UI 自动化控件类型概述

此外,UI 自动化元素公开一个或多个控件模式。 控件模式提供一组特定于特定控件类型的属性。 控件模式还公开方法,使客户端应用程序能够获取有关 元素的详细信息,并为 元素提供输入。 有关控件模式的详细信息,请参阅 UI Automation Control Patterns Overview

注意

控件类型和控件模式之间没有一对一的对应关系。 一个控件模式可被多个控件类型支持,且一个控件可支持多个控件模式,两者均公开其行为的不同方面。 例如,组合框中至少具有两个控件模式:一个表示可展开和折叠的功能,另一个代表选择机制。 但是,控件只能显示单个控件类型。

UI 自动化通过事件向客户端应用程序提供信息。 与 WinEvents 不同,UI 自动化事件不是基于广播机制。 UI 自动化客户端注册特定事件通知,并可以请求将特定属性和控件模式信息传递给其事件处理程序。 此外,UI 自动化事件包含对引发它的元素的引用。 提供程序可以通过有选择地引发事件来提高性能,具体取决于任一客户端是否正在进行侦听。 有关事件的详细信息,请参阅 UI Automation Events Overview

概念性

UI 自动化控件类型概述

UI 自动化控件模式概述

UI 自动化事件概述