c++ win32文本选择检测和在另一个应用程序中获取和修改
Posted
技术标签:
【中文标题】c++ win32文本选择检测和在另一个应用程序中获取和修改【英文标题】:c++ win32 text selection detection and fetching and modifying in another application 【发布时间】:2012-02-20 20:59:03 【问题描述】:我见过一个用于帮助盲人的应用程序,它被称为 JAWS(它充当屏幕阅读器),它检测字符串并在许多应用程序中读取它,例如 MS Office 应用程序、记事本、Internet Explorer ...... 。ETC。是否可以在另一个应用程序中检测文本选择?怎么样?我认为使用了可访问性,但我不知道如何使用它!我可以用热键替换选择检测。 _ 我试图找到如下解决方案
-
获取顶部和激活的窗口或从鼠标位置。
从鼠标位置获取它的子节点。
获取或设置选定的文本。
在 ms word 中,我使用 spy++ 来检测包含我得到“Microsoft Word 文档”文本的控件
【问题讨论】:
【参考方案1】:没有简单的方法可以做到这一点,因为没有单一一致的方法可以从任意应用程序中获取文本(选择的或其他的)。 JAWS 等应用程序通常使用一整套技术,具体取决于应用程序或控件:
对于 EDIT 和 RichEdit 控件,各种 EM_ messages 工作。
对于 Internet Explorer,可以使用 html DOM。
对于 Word,Text Object Model 接口可用于访问文本和格式。其他应用可能支持类似的特定应用模型。
一些(但不是全部)应用程序和应用程序框架支持可访问性 API,例如 UIAutomation 或 IAccessible2,它允许访问有关应用程序中控件的信息,以及有关文本和文本选择的信息。
1234563绘制在哪里,这样他们就可以查找应该在屏幕上任何位置的文本。由于这些都不能单独涵盖所有内容,因此屏幕阅读器通常会根据当前应用的需要尝试所有这些:您几乎可以将屏幕阅读器视为一个特殊情况代码库,用于从各种应用中提取信息。
【讨论】:
感谢您的回答,但如果您知道文本对象模型的简单指南并将其与 MS Word 一起使用 -> 请参考。以上是关于c++ win32文本选择检测和在另一个应用程序中获取和修改的主要内容,如果未能解决你的问题,请参考以下文章