注释
本文档适用于想要使用 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 自动化不会通过 运行方式 命令启用由不同用户启动的进程之间的通信。
UI 自动化客户端应用程序可以编写,以确保它们能够处理多个框架。 UI 自动化核心会屏蔽框架中各种 UI 片段背后的任何差异。 例如, Content
WPF 按钮的属性、 Caption
Win32 按钮的属性和 ALT
HTML 图像的属性都映射到 UI 自动化视图中的单个属性 Name。
UI 自动化在运行 .NET Framework 或者 .NET Core 3.0 或更高版本的受支持 Windows 操作系统上提供完整功能(请参阅 .NET Framework 系统要求)。
UI 自动化提供程序通过内置桥接服务为 Microsoft Active Accessibility 客户端应用程序提供一些支持。
供应商和客户端
UI 自动化有四个主要组件,如下表所示。
组件 | DESCRIPTION |
---|---|
提供程序 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 自动化基础知识 (本部分) | 概念的大致概述。 | 全部。 |
用于托管代码 的 |
可帮助你使用提供程序 API 的概述和帮助主题。 | 控制开发人员。 |
托管代码的 UI 自动化客户端 | 可帮助你使用客户端 API 的概述和帮助主题。 | 客户端应用程序开发人员。 |
UI 自动化控制模式 | 有关提供程序应如何实现控件模式以及客户端可用的功能的信息。 | 全部。 |
UI 自动化文本模式 | 有关提供程序应如何实现 Text 控件模式以及哪些功能可供客户端使用的信息。 | 全部。 |
UI 自动化控件类型 | 有关不同控件类型支持的属性和控件模式的信息。 | 全部。 |
下表列出了 UI 自动化命名空间、包含它们的 DLL 以及使用这些命名空间的受众。
Namespace | 被引用的 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 自动化控件类型。
UI 自动化还通过事件向客户端应用程序提供信息。 与 WinEvents 不同,UI 自动化事件不基于广播机制。 UI 自动化客户端注册特定事件通知,并可以请求将特定的 UI 自动化属性和控制模式信息传递到其事件处理程序中。 此外,UI 自动化事件还包含对引发它的元素的引用。 提供程序可以通过有选择地引发事件来提高性能,具体取决于任一客户端是否正在进行侦听。