如何使自定义 GUI 控件对屏幕阅读器可见?

Posted

技术标签:

【中文标题】如何使自定义 GUI 控件对屏幕阅读器可见?【英文标题】:How to make custom GUI controls visible to screen readers? 【发布时间】:2013-07-05 09:03:41 【问题描述】:

我正在努力提高我的 Delphi 应用程序对视力障碍用户的可访问性。我的应用程序使用许多自定义 GUI 组件。它们大多来自 TWinControl 或 TGraphicControl。

在使用NVDA测试时,我的自定义组件似乎是不可见的。例如,NVDA将通过读取常规Delphi VCL控件(例如按钮或表单)播放时读取控件(或其他细节)的名称来响应。相比之下,当在任何自定义控件上致力于鼠标时,NVDA根本没有响应。

如何使我的自定义组件对NVDA和其他屏幕阅读软件可见?

【问题讨论】:

可能的副本Creating Accessible UI components in Delphi remy在这个问题上的出色答案将指导您解决方案 span> @ davidheffernan谢谢您的链接。我不认为这个问题是完全重复的。 Remy 的回答解决了实现 IAccessible 的问题,这只是可能实现的 API 之一。 【参考方案1】:

在NVDA Design Overview 页面上找到了答案。 NVDA 使用许多可访问性 API 来收集有关 GUI 控件的信息。 NVDA 支持:

Microsoft Active Accessibility (MSAA)(也称为 IAccessible), ​IAccessible2, Java 访问桥 UI Automation

看来我需要实现上述 API 之一。不确定每个 API 的优缺点是什么。

Creating Accessible UI components in Delphi 提供有关实现 IAccessible 的详细信息。 (感谢大卫的链接)

【讨论】:

我相当怀疑 MSAA 比 UIAutomation 更容易实现。我还认为较旧的 MSAA 将比最近的 UIAutomation 获得更广泛的支持。因此,除非您需要支持仅在 UIAutomation 中可用的功能,否则您可能会更好地使用 MSAA。

以上是关于如何使自定义 GUI 控件对屏幕阅读器可见?的主要内容,如果未能解决你的问题,请参考以下文章

使自定义控件在 TestComplete 中更具可测试性

如何确定控件何时对用户可见?

如何制作一些简单的 GUI 控件?

是否有在线模拟屏幕阅读器工具来测试自定义网页? [关闭]

屏幕阅读器 WPF 组样式

如何在不让它在句子中间暂停的情况下覆盖屏幕阅读器对句子中单词的发音?