如何使自定义 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 控件对屏幕阅读器可见?的主要内容,如果未能解决你的问题,请参考以下文章