体系结构和互操作性

本主题简要介绍 Microsoft Active Accessibility 和 Microsoft UI 自动化的体系结构,以及允许基于两种不同技术的应用程序之间互操作性的组件。

有关 Microsoft Active Accessibility 和UI 自动化互操作性的详细信息,请参阅通用基础结构

本主题包含以下各节:

Microsoft Active Accessibility 体系结构

Microsoft Active Accessibility 公开控件的基本信息,例如控件名称、屏幕上的位置和控件类型,以及状态信息,如可见性和启用/禁用状态。 UI 表示为可访问对象的层次结构;更改和操作表示为 WinEvents。

Microsoft Active Accessibility 由以下组件组成:

  • 可访问对象 - 逻辑 UI 元素 (,例如按钮) ,由 IAccessible 组件对象模型 (COM) 接口和整数子标识符 (ChildID) 表示。
  • WinEvents - 一种事件系统,使服务器能够在可访问对象更改时通知客户端。 有关详细信息,请参阅 WinEvents
  • OLEACC.dll — 运行时动态链接库,提供 Microsoft Active Accessibility API 和辅助功能系统框架。 OLEACC 实现代理对象,这些对象为标准 UI 元素(包括 USER 控件、用户菜单和常用控件)提供默认辅助功能信息。

对于 Microsoft Active Accessibility,辅助功能框架 (OLEACC) 的系统组件可帮助辅助技术 (辅助工具) 和应用程序之间的通信,如下图所示。

显示辅助功能工具如何与应用程序交互的插图

(Microsoft Active Accessibility 服务器的应用程序) 向代表用户与 UI 交互的 Microsoft Active Accessibility 客户端) (工具提供 UI 辅助功能信息。 代码边界既是编程边界,也是进程边界。

UI 自动化体系结构

使用 UI 自动化,UI 自动化核心组件 (UIAutomationCore.dll) 将加载到辅助功能工具和应用程序进程中。 核心组件管理跨进程通信,提供更高级别的服务(如按属性值搜索元素),并支持批量提取或缓存属性,这比 Microsoft Active Accessibility 实现提供更好的性能。

UI 自动化包括代理对象,这些对象提供有关标准 UI 元素(如 USER 控件、用户菜单和常见控件)的 UI 信息。 它还包括使UI 自动化客户端能够从 Microsoft Active Accessibility 服务器获取 UI 信息的代理。

下图显示了辅助工具 (客户端) 和应用程序 (提供程序) 中使用的各种UI 自动化组件之间的关系。

显示辅助功能工具组件如何与应用程序中的组件交互的插图

Microsoft Active Accessibility and UI 自动化 Interoperability

Microsoft Active Accessibility Bridge UI 自动化使 Microsoft Active Accessibility 客户端能够通过将 UI 自动化 对象模型转换为 Microsoft Active Accessibility 对象模型来访问UI 自动化提供程序。 下图显示了 UI 自动化到 Microsoft Active Accessibility Bridge 的角色。

显示 ui 自动化如何与辅助功能工具和应用程序配合使用的插图

同样,Microsoft Active Accessibility-to-UI 自动化 Proxy 将基于 Microsoft Active Accessibility 的服务器对象模型转换为UI 自动化客户端。 下图显示了 Microsoft Active Accessibility-to-UI 自动化 Proxy 的角色。

显示 ui 自动化代理如何与辅助功能工具和应用程序配合使用的插图

IAccessibleEx 接口

IAccessibleEx 接口使现有应用程序或 UI 库能够扩展其 Microsoft Active Accessibility 对象模型以支持UI 自动化,而无需从头开始重写实现。 使用 IAccessibleEx,只能实现完全描述 UI 及其功能所需的附加UI 自动化属性和控件模式。

由于 Microsoft Active Accessibility-to-UI 自动化 Proxy 将已启用 IAccessibleEx 的 Microsoft Active Accessibility 服务器的对象模型转换为UI 自动化对象模型,因此UI 自动化客户端不需要执行任何额外的工作。 IAccessibleEx 接口还可以使进程内 Microsoft Active Accessibility 客户端直接与UI 自动化提供程序交互。

有关详细信息,请参阅 IAccessibleEx 接口

Windows 自动化 API 概述

IAccessibleEx 接口

辅助技术的安全注意事项