体系结构和互操作性

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

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

本主题包含以下各节:

Microsoft Active Accessibility Architecture

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 的系统组件) 可帮助辅助技术 (辅助功能工具) 和应用程序之间的通信,如下图所示。

illustration showing how accessibility tools interact with applications

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

UI 自动化体系结构

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

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

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

illustration showing how components of accessibility tools interact with those in applications

Microsoft Active Accessibility 和 UI 自动化 互操作性

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

illustration showing how ui automation works with accessibility tools and applications

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

illustration showing how ui automation proxy works with accessibility tools and applications

IAccessibleEx 接口

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

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

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

Windows自动化 API 概述

IAccessibleEx 接口

辅助技术的安全注意事项