我试图检测屏幕阅读器是否连接到我的应用程序,以便我可以改善盲人和低视力用户的体验。 我使用这个win32 api(http://msdn.microsoft.com/en-us/library/ms724947%28VS.85%29.aspx),并指定SPI_GETSCREENREADER作为uiAction。 调用看起来像这样:
int iAction = 70; // SPI_GETSCREENREADER constant; int iParam = 0; int iUpdate = 0; bool result = false; bool bReturn = SystemParametersInfo(iAction,iParam,&result,iUpdate);
如果JAWS正在运行,或者放大实用程序,则此API报告已连接屏幕阅读器。 但是,如果我只有内置屏幕阅读器运行(MS讲述人),此API报告没有附加屏幕阅读器。
这真的发生了吗? 在微软的人们是否真的决定不报告内置的屏幕阅读器作为屏幕阅读器?
包含QMdisubWindows的qmdiarea对可访问性API不可见
用于testing可访问性的命令行软件
在.NET应用程序中禁用可访问性快捷方式?
除了Sound Sentry,我还可以通过哪些方式使我的Windows应用程序对身体有缺陷的人更友好?
如何实现对自定义控件的可访问性?
修复Android Studio的窗口放大镜(辅助工具)?
用C ++中的CreateProcess()启动语音识别
视觉障碍,需要咨询,提示或鼓励
我不能测试代码,但可悲的是你可能是正确的。 讲述人是一个非常基本的屏幕阅读器,除了允许您查看您的主屏幕阅读器是否崩溃之外,几乎没有提供有用的功能。 有传言说,微软公司想在最初发布的时候把它变成一个全功能的屏幕阅读器,但是已经退出了已经生产屏幕阅读器的公司可能出现的反托拉斯问题。 请注意,这是我曾经听过的一些盲目的电子邮件列表,但是无法验证是否有任何事实。 如果这是真的,那么就可以解释为什么叙述者只要我记得就一直没有真正的改善。 我不担心讲述人,如果用户使用你的应用程序,他们将使用一个像大白鲨一样体面的屏幕阅读器。 我一直在使用屏幕阅读软件,并从来不知道任何人使用“讲述人”作为主屏幕阅读器。 如果你想用免费的屏幕阅读器进行测试,我会推荐NVDA。根据我的经验,它不像下巴那么好,但是它是一个非常实用的屏幕阅读器,没有昂贵的价格标签。
如果有人陷入这个可怕的陷阱。 讲述人在开始运行时会设置一个互斥体(这完全没有记录,但是如果您需要检测ms解说器,它似乎可以正常工作)
wstring m_wstrMutexKey = L"NarratorRunning"; // security attributes are part of windows API for CreateMutex LPSecurity_ATTRIBUTES securityAttributes = new _Security_ATTRIBUTES(); securityAttributes->bInheritHandle = false; securityAttributes->lpSecurityDescriptor = NULL; securityAttributes->nLength = sizeof(LPSecurity_ATTRIBUTES); // initialize values bool isRunning = false; // CreateMutex returns a windows application HANDLE HANDLE m_applicationHandle = CreateMutex(securityAttributes,false,m_wstrMutexKey.c_str()); // This should never happen if (m_applicationHandle == NULL) { isRunning = false; } // This condition indicates that narrator is running. if (GetLastError() == ERROR_ALREADY_EXISTS) { isRunning = true; } if (isRunning) { cout<<"Narrator is running."; } else { cout<<"No Mutex found. Narrator is not running."; } delete(securityAttributes);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。