3

我见过一个用于帮助盲人的应用程序,它被称为 JAWS(它充当屏幕阅读器)它检测字符串并在许多应用程序中读取它,例如 MS Office 应用程序、记事本、Internet Explorer .....等。是否可以在另一个应用程序中检测文本选择?怎么样?我认为使用了可访问性,但我不知道如何使用它!我可以用热键替换选择检测。_ 我试图找到如下解决方案

  1. 获取顶部和激活的窗口或从鼠标位置。
  2. 从鼠标位置获取它的孩子。
  3. 获取选定的文本或设置它。

在 ms word 中,我使用 spy++ 来检测包含我得到“Microsoft Word 文档”文本的控件 在此处输入图像描述

4

1 回答 1

5

没有简单的方法可以做到这一点,因为没有单一一致的方法可以从任意应用程序中获取文本(选择或其他方式)。JAWS 等应用程序通常使用一整套技术,具体取决于应用程序或控件:

  • 对于 EDIT 和 RichEdit 控件,各种EM_ 消息都有效。

  • 对于 Internet Explorer,可以使用HTML DOM 。

  • 对于 Word,文本对象模型接口可用于访问文本和格式。其他应用程序可能支持类似的应用程序特定模型。

  • 一些(但不是全部)应用程序和应用程序框架支持可访问性 API,例如UIAutomationIAccessible2,它们允许访问有关应用程序中控件的信息,以及有关文本和文本选择的信息。

  • 对于不支持上述任何一项的应用程序,屏幕阅读器通常使用一种称为离屏模型的技术,这是一种复杂的技术,涉及拦截所有图形输出调用,并维护一个内存数据库,其中包含在哪里绘制的内容,所以他们可以查找应该在屏幕上的任何点的文本。

由于这些都没有单独涵盖所有内容,因此屏幕阅读器通常会根据当前应用程序尝试所有这些:您几乎可以将屏幕阅读器视为特殊情况代码库,用于从各种应用程序中提取信息。

于 2012-02-21T00:02:17.990 回答