UI 自动化提供程序概述

更新:2007 年 11 月

UI 自动化提供程序使控件能够与 UI 自动化客户端应用程序进行通信。通常,用户界面 (UI) 中的每个控件或其他不同的元素都由一个提供程序表示。该提供程序公开有关元素的信息,并根据需要实现使客户端应用程序能够与控件交互的控件模式。

客户端应用程序通常不必直接使用提供程序。应用程序中使用 Win32、Windows 窗体 或 Windows Presentation Foundation (WPF) 框架的大多数标准控件都会自动向 UI 自动化系统公开。实现自定义控件的应用程序还可以为这些控件实现 UI 自动化提供程序,并且,客户端应用程序不必执行任何特殊步骤即可访问它们。

本主题概述控件开发人员实现 UI 自动化提供程序的方式,特别是为 Windows 窗体 和 Win32 窗口中的控件实现提供程序的方式。

本主题包括下列各节。

  • 提供程序类型
  • UI 自动化提供程序概念
  • 相关主题

提供程序类型

UI 自动化提供程序分为两种类别:客户端提供程序和服务器端提供程序。

客户端提供程序

客户端提供程序由 UI 自动化客户端实现,用于与不支持(或不完全支持)UI 自动化的应用程序进行通信。客户端提供程序通常通过发送和接收 Windows 消息跨进程边界与服务器通信。

由于 Win32、Windows 窗体 或 WPF 应用程序中控件的 UI 自动化提供程序是作为操作系统的一部分提供的,因此客户端应用程序只有在很少情况下才必须实现自己的提供程序,本概述也不再进一步讨论这些提供程序。

服务器端提供程序

服务器端提供程序是由基于 UI 框架(而不是 Win32、Windows 窗体 或 WPF)的自定义控件或应用程序实现的。

服务器端提供程序通过向 UI 自动化核心系统公开接口(该系统接下来处理来自客户端的请求),从而跨进程边界与客户端应用程序通信。

UI 自动化提供程序概念

本节简要介绍一些关键概念,您需要了解这些概念才能实现 UI 自动化提供程序。

元素

UI 自动化元素是对 UI 自动化客户端可见的若干用户界面 (UI)。示例包括应用程序窗口、窗格、按钮、工具提示、列表框和列表项。

导航

UI 自动化元素以 UI 自动化树的形式向客户端公开。UI 自动化通过从一个元素项另一个元素导航来构造树。导航由每个元素的提供程序启用,其中每个提供程序都可能指向一个父项、同级项和子项。

有关 UI 自动化树的客户端视图的更多信息,请参见 UI 自动化树概述

视图

客户端可以在三个主要视图中看到 UI 自动化树,如下表中所示。

原始视图

包含所有元素。

控件视图

包含控件元素。

内容视图

包含有内容的元素。

有关 UI 自动化树的客户端视图的更多信息,请参见 UI 自动化树概述

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

框架

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

Win32 容器控件(如列表框和树视图)可视为框架,因为它们包含自己的用于呈现子项并对子项执行命中测试的代码。相反,WPF 列表框不是框架,因为呈现和命中测试操作是由包含列表框的 WPF 窗口处理的。

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

片段

片段是特定框架中元素的完整子树。位于子树根节点处的元素称为片段根元素。片段根元素没有父项,但寄宿在某个其他框架(通常是 Win32 窗口 (HWND))内。

宿主

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

片段的宿主在提供 UI 自动化服务方面扮演着重要的角色。它允许导航到片段根元素,并提供一些默认属性,这样自定义提供程序就不必实现这些属性。

请参见

概念

服务器端 UI 自动化提供程序的实现