UI 自动化概述

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

UI 自动化首次在 Windows XP 中作为 Microsoft .NET Framework的一部分提供。 尽管当时还发布了非托管 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 Active Accessibility 用于UI 自动化代理以支持 Win32 控件的代理对象。

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

UI 自动化头文件

UI 自动化 API 在多个不同的 C/C++ 头文件中定义,这些文件包含在Windows软件开发工具包 (SDK) 中。 下表介绍了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 头文件。 UI 自动化使用 GUID 的应用程序也需要 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 自动化事件概述