accessibility - IAccessible、IAccessible2、UIAutomation 和 MSAA 之间有什么区别?

标签 accessibility uiaccessibility uia iaccessible

我正在开始研究可访问性,但我对遇到的不同技术感到有些困惑。

IAccessible 和 IAccessible2 有什么区别?我最初认为 IAccessible2 可能是 IAccessible 的更新版本,但经过进一步研究,它看起来实际上是由 Microsoft 的竞争对手制造的。维基百科说“它已被定位为微软新的 UI 自动化 API 的替代品。” MSAA 如何融入其中?

任何人都可以澄清 IAccessible、IAccessible2、UI 自动化 API 和 MSAA 之间的区别吗?为什么一个可能比另一个更可取?

最佳答案

Microsoft Active Accessibility (MSAA) 是 Microsoft 最初的辅助功能 API; version 1 of MSAA是针对 Windows 95 的附加版本。MSAA 在 roles, names, values and states 集方面受到限制。支持;这意味着可以将可访问性元数据传达给辅助技术(例如屏幕阅读器)的一组图形组件是有限的。

[IAccessible]( https://docs.microsoft.com/en-us/previous-versions//ms696097(v=vs.85) 是 MSAA 的一部分:

The IAccessible interface is a collection of methods that expose the most common attributes and behaviors of a wide range of user interface (UI) elements. A UI element is a control, such as a menu or push button, that is part of the user interface. An accessible object is a UI element that has a meaningful IAccessible interface.



MSAA 的局限性阻碍了 IAccessible2 的发展(最初在 IBM),旨在填补 MSAA 中的空白,例如“支持文本控件、表格、超链接和可访问对象之间的关系”。它与 Accessibility Toolkit (ATK) 协调一致在 Linux(尤其是 Gnome)上。 IAccessible2 是对 MSAA 的补充,而不是替代。

Microsoft UI 自动化是 Microsoft 自己的 MSAA 继任者。见 UI Automation and Active Accessibility :

Microsoft Active Accessibility is the legacy API that was introduced in Windows 95, and was designed to make Windows applications accessible. Microsoft UI Automation is the new accessibility model for Windows and is intended to address the needs of assistive technology products and automated testing tools. UI Automation offers many improvements over Microsoft Active Accessibility.



它为用户界面组件提供了一组更丰富的角色、状态和属性,这些组件可以与实现 API 的辅助技术进行通信。

这些较新的可访问性 API 至关重要的一个领域是对富 Internet 应用程序的可访问性支持。 W3C 的 WAI-ARIA 规范的开发人员审查了存在于各种平台上的可访问性 API,并将可用的角色、状态和属性映射到 WAI-ARIA 规范中提议的对应物。这涉及创建 mapping tables可以在 WAI-ARIA 1.0 用户实现指南中找到。另见 UI Automation for W3C Accessible Rich Internet Applications Specification在微软的文档中。在 Microsoft Edge 中,Microsoft transitioned from MSAA to UI Automation .

关于accessibility - IAccessible、IAccessible2、UIAutomation 和 MSAA 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55129774/

相关文章:

swift - 画外音 : can I adapt different voices tones in swift?

ios - 通知画外音用户他们已突出显示容器中的元素

c# - 如何遍历一个程序的所有子元素

c# - Mono 没有找到 UIA Bridge,但是包已经安装了

javascript - 我们是否应该考虑禁用 javascript 的用户的可访问性?

ios - 对于 iOS、Safari、VoiceOver,如何让 VoiceOver 读取自定义单选按钮?

node.js - 有没有人使用 Chrome Lighthouse Node CLI 来自动运行审计(尤其是可访问性)?

ios - UIAccessibilityAnnouncementNotification 异步问题

ios - VoiceOver 未正确宣布 UITextInput

ui-automation - UIA 验证无法识别 System.Windows.Forms.ListView 复选框