UI 自动化概述

备注

本文档适用于想要使用 System.Windows.Automation 命名空间中定义的托管 UI 自动化类的 .NET Framework 开发人员。 有关 UI 自动化的最新信息,请参阅 Windows 自动化 API:UI 自动化

Microsoft UI 自动化是适用于 Microsoft Windows 的新辅助功能框架,可在支持 Windows Presentation Foundation (WPF) 的所有操作系统上使用。

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

备注

UI 自动化不会在由不同用户通过“Run as”命令启动的进程之间实现通信。

UI 自动化客户端应用程序可在保证其将在多个框架上运行的情况下进行编写。 UI 自动化核心掩盖了位于 UI 各组成部分之下的框架中的任何差异。 例如,在 UI 自动化视图中,WPF 按钮的 Content 属性、Win32 按钮的 Caption 属性和 HTML 图像的 ALT 属性全都映射到单个属性 Name

UI 自动化在运行 .NET Framework 或者 .NET Core 3.0 或更高版本的受支持 Windows 操作系统上提供完整功能(请参阅 .NET Framework 系统要求)。

UI 自动化提供程序通过内置的桥接服务为 Microsoft Active Accessibility 客户端应用程序提供某些支持。

提供程序和客户端

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

组件 说明
提供程序 API(UIAutomationProvider.dll 和 UIAutomationTypes.dll) 一组由 UI 自动化提供程序实现的接口定义,以及一组提供有关 UI 元素的信息并响应编程输入的对象。
客户端 API(UIAutomationClient.dll 和 UIAutomationTypes.dll) 托管代码的一组类型,它们使 UI 自动化客户端应用程序可以获取有关 UI 的信息,并将输入发送到控件。
UiAutomationCore.dll 用于处理提供程序与客户端之间的通信的底层代码(有时称为 UI 自动化核心)。
UIAutomationClientsideProviders.dll 一组用于标准旧版本控件的 UI 自动化提供程序。 (WPF 控件原生支持 UI 自动化。)此支持自动提供给客户端应用程序。

从软件开发人员的角度讲,可通过以下两种方式使用 UI 自动化:创建对自定义控件的支持(使用提供程序 API),创建使用 UI 自动化核心来与 UI 元素通信的应用程序(使用客户端 API)。 具体取决于侧重点,你应参考文档中的其他部分。 你可在以下各节中进一步了解概念并获得实际操作知识。

部分 行业专家 目标受众
UI 自动化基础知识(本部分) 对概念的广泛概述。 全部。
托管代码的 UI 自动化提供程序 可帮助你使用提供程序 API 的概述和帮助主题。 控件开发人员。
托管代码的 UI 自动化客户端 可帮助你使用客户端 API 的概述和帮助主题。 客户端应用程序开发人员。
UI 自动化控件模式 有关提供程序应如何实现控件模式以及哪些功能可供客户端使用的信息。 全部。
UI 自动化文本模式 有关提供程序应如何实现 Text 控件模式以及哪些功能可供客户端使用的信息。 全部。
UI 自动化控件类型 有关不同控件类型支持的属性和控件模式的信息。 全部。

下表列出 UI 自动化命名空间、包含这些命名空间的 DLL 以及使用它们的受众。

命名空间 被引用的 DLL 目标受众
System.Windows.Automation UIAutomationClientUIAutomationTypes UI 自动化客户端开发人员;用于查找 AutomationElement 对象、注册 UI 自动化事件,以及使用 UI 自动化控件模式。
System.Windows.Automation.Provider UIAutomationProviderUIAutomationTypes WPF 以外的其他框架的 UI 自动化提供程序的开发人员。
System.Windows.Automation.Text UIAutomationClientUIAutomationTypes WPF 以外的其他框架的 UI 自动化提供程序的开发人员;用于实现 TextPattern 控件模式。
System.Windows.Automation.Peers PresentationFramework WPF 的 UI 自动化提供程序的开发人员。

UI 自动化模型

UI 自动化将 UI 的每个部分作为 AutomationElement 向客户端应用程序公开。 元素包含在树状结构,而桌面作为根元素。 客户端可将树的原始视图筛选为控件视图或内容视图。 应用程序还可以创建自定义视图。

AutomationElement 对象公开它们所代表的 UI 元素的公共属性。 这些属性之一则是控件类型,它将其基本外观和功能定义为单个可识别的实体:如按钮或复选框。

此外,元素公开向其控件类型提供特定属性的控件模式。 控件模式还公开方法,使客户端获取有关该元素的详细信息,并提供输入。

备注

控件类型和控件模式之间并无一一对应关系。 一个控件模式可被多个控件类型支持,且一个控件可支持多个控件模式,两者均公开其行为的不同方面。 例如,组合框中至少具有两个控件模式:一个表示可展开和折叠的功能,另一个代表选择机制。 有关详细信息,请参阅 UI Automation Control Types

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

请参阅