UI 自动化提供程序概述

Microsoft UI 自动化提供程序是一个软件对象,它公开应用程序的 UI 元素,以便辅助功能客户端应用程序可以检索有关元素的信息并调用其功能。 通常,UI 中的每个控件或其他不同元素都有提供程序。

Microsoft 包括 Microsoft Win32、Windows 窗体 和 Windows Presentation Foundation (WPF) 提供的每个标准控件的提供商。 这意味着标准控件会自动向UI 自动化客户端公开;无需为标准控件实现任何辅助功能接口。

如果应用程序包含任何自定义控件,则需要为这些控件实现UI 自动化提供程序,使其可供辅助功能客户端应用程序访问。 还需要为不包含提供程序的任何第三方控件实现提供程序。 通过实现UI 自动化提供程序接口和控制模式接口来实现提供程序。

本主题概述了控制开发人员如何实现UI 自动化提供程序。 其中包括以下部分。

提供程序类型

UI 自动化提供程序分为两类:服务器端提供程序和客户端 (或代理) 提供程序。

服务器端提供程序是一个对象,如自定义控件,其中包含其自己的本机实现相关UI 自动化提供程序接口。 服务器端提供程序通过将提供程序接口的实现公开给UI 自动化核心(服务来自客户端的请求)来跨进程边界与客户端应用程序通信。 有关服务器端提供程序的详细信息,请参阅实现Server-Side UI 自动化提供程序

客户端提供程序或代理是代表控件实现UI 自动化提供程序接口的对象不包括其自己的完整提供程序实现。 如果没有代理,此类控件基本上无法UI 自动化,这只能提供窗口句柄 (HWND) (如控制位置)中可用的基本信息。 通常,代理提供程序通过发送和接收Windows消息来跨进程边界与应用程序通信。 有关详细信息,请参阅实现Client-Side (代理) UI 自动化提供程序

UI 自动化提供程序概念

本部分简要介绍实现 UI 自动化提供程序所需了解的一些关键概念。

元素

UI 自动化元素是UI 自动化客户端可见的 UI(通常是窗口或控件)的片段。 示例包括应用程序窗口、窗格、按钮、工具提示、列表框和列表项。

UI 自动化元素作为树向客户端公开。 UI 自动化通过从在元素之间进行导航来构造该树。 导航由每个元素的提供程序启用。 每个元素可以指向其自己的父元素、同级元素以及其第一个和最后一个子元素。

客户端可以在三个主体视图中查看UI 自动化树,如下表所述:

查看 说明
原始视图 包括所有元素。
控件视图 包括控件的元素。
内容视图 包括向用户传达信息的控件元素。

 

提供程序实现负责将元素为定义为内容元素或控件元素。 控件元素可以是也可以不是内容元素,但所有内容元素都是控件元素。

有关树的客户端视图的详细信息,请参阅UI 自动化树概述

框架

框架是一个组件,用于管理屏幕某一区域中的子控件、命中测试和呈现方式。 例如,Win32 窗口(通常称为 HWND)可用作包含多个UI 自动化元素的框架,例如菜单栏、状态栏和按钮。

Win32 容器控件(如列表框和树视图控件)被视为框架,因为它们包含自己的代码来呈现子项并对其执行命中测试。 相比之下,WPF 列表框不是框架,因为正在由包含窗口处理呈现和命中测试。

应用程序中的 UI 可由不同框架构成。 例如,应用程序中的 HWND 可能包含动态 HTML (DHTML) ,后者又可以包含 HWND 中的组合框等组件。

Fragments

特定框架中元素的完整子树称为片段。 子树根节点处的元素称为片段根。 片段根没有父级,但托管在其他框架中,通常是 Win32 窗口 (HWND) 。

主机

每个片段的根节点必须托管在元素中,通常是 Win32 窗口 (HWND) 。 例外情况是桌面,它不承载在任何其他元素中。 自定义控件的主机是控件本身的 HWND ,而不是应用程序窗口或任何其他可能包含顶级控件组的窗口。

片段的宿主对于提供 UI 自动化服务中而言非常重要。 它允许导航到片段根,并提供一些默认属性,使自定义提供程序无需实现这些属性。

概念性

实现Client-Side UI 自动化提供程序

实现Server-Side UI 自动化提供程序

UI 自动化树概述