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文本选择检测和在另一个应用程序中获取和修改的主要内容,如果未能解决你的问题,请参考以下文章

如何使用visual studio 2017编写一个C++程序

在另一个应用程序中捕获文本选择

c++ win32 嵌入式 3rd 方应用程序

win32 c++ 在没有子类化的编辑控件中检测“输入”?

如何设置win32 api c++按钮背景颜色和文本颜色?

Win32 API VS C++;文本框内容到字符串