ahm*_*n86 3 c++ winapi accessibility jaws-screen-reader
我见过一个用于帮助盲人的应用程序,它称为JAWS(它充当屏幕阅读器),它可以检测字符串并在许多应用程序中读取它,例如MS Office应用程序,记事本,Internet Explorer .....等。是否有可能在其他应用程序中检测文本选择?我认为使用了可访问性,但我不知道该怎么做!我可以用快捷键替换选择检测。_我试图找到以下解决方案
在MS Word中,我使用了Spy ++来检测包含文本的控件,我得到了“ Microsoft Word文档”

没有简单的方法可以做到这一点,因为没有统一的方法可以从任意应用程序中获取文本(选择或其他方式)。JAWS之类的应用程序通常会使用全部技术,具体取决于应用程序或控件:
对于EDIT和RichEdit控件,可以使用各种EM_消息。
对于Internet Explorer,可以使用HTML DOM。
对于Word,文本对象模型接口可用于访问文本和格式。其他应用程序可能支持类似的特定于应用程序的模型。
一些(但不是全部)应用程序和应用程序框架支持可访问性API,例如UIAutomation或IAccessible2,它们允许访问有关应用程序中控件的信息以及有关文本和文本选择的信息。
对于不支持上述任何一项的应用程序,Screenreader经常使用一种称为“屏幕外模型 ”的技术,该技术涉及拦截所有图形输出调用并维护在何处绘制的内存数据库,因此它们可以在屏幕上的任意位置查找文本。
由于所有这些都不能单独涵盖所有内容,因此屏幕阅读器通常会尝试将其全部适合于当前应用程序:您几乎可以将屏幕阅读器看作是特殊情况代码库,可以从各种应用程序中提取信息。