跳到主要内容

MSAA 和 UIA

UI Automation (UIA) 和 Microsoft Active Accessibility (MSAA) 都是由 Microsoft 开发的技术,用于支持辅助技术产品,如屏幕阅读器,与应用程序交互,以帮助残障人士。尽管它们有共同的目标,但它们在设计和实现上存在一些差异。

具体使用可以参考 微软的文档

Microsoft Active Accessibility (MSAA)

  • 时间线与目的:MSAA 是最早的辅助技术之一,最初在 Windows 95 的后期版本中引入。它旨在提供一种方式,让辅助技术能够与操作系统及应用程序交互,特别是为了帮助视觉障碍用户。
  • 工作方式:MSAA 通过提供一个标准接口,使辅助技术能够访问和操作用户界面(UI)元素的属性,如按钮和菜单。它侧重于简单的控件和标准用户界面元素。
  • 局限性:随着应用程序和用户界面变得越来越复杂,MSAA 的一些局限性开始显现。例如,它不支持一些新的用户界面模式,如Web内容或高级自定义控件。

如果应用程序支持 Microsoft Active Accessibility,请包含 Oleacc.h 头文件。 使用 GUID 的 UI 自动化应用程序还需要 Initguid.h 头文件。

#include <oleacc.h>
#include <initguid.h>

UI Automation (UIA)

  • 时间线与目的:UIA 是在 MSAA 之后开发的,旨在克服 MSAA 的一些局限性,并提供一个更全面和灵活的框架,支持新的用户界面技术,包括那些在Web应用程序和复杂桌面应用程序中找到的。
  • 工作方式:UIA 提供了一个更丰富的接口集合,允许辅助技术访问和控制UI元素,包括那些MSAA难以处理的复杂控件和模式。它支持高级功能,如事件监听、模式识别(比如拖放操作)和控件的自定义属性。
  • 与 MSAA 的兼容性:UIA 包括了对 MSAA 的向后兼容性,这意味着通过 UIA 开发的应用程序仍然可以通过使用辅助技术工具来访问,这些工具是基于 MSAA 的。

关系

尽管 UIA 是在 MSAA 之后开发的,且在技术上更先进,它并没有完全取代 MSAA。相反,它们通常被视为互补的,因为 UIA 提供了向后兼容MSAA的支持。这种设计允许辅助技术产品利用 UIA 提供的新功能,同时保持与仍然只支持 MSAA 的旧应用程序的兼容性。随着时间的推移,UIA 成为开发新应用程序和辅助技术工具的首选技术,但 MSAA 仍然在旧应用程序中发挥作用。

References