在Windows中,如何使用C++或C#在属于另一进程的窗口中获取高亮显示的文本

本文关键字:进程 窗口 高亮 文本 显示 获取 属于 Windows 何使用 C++ | 更新日期: 2023-09-27 18:29:36

它在C++翻译程序中。当用户在不按CTRL-C的情况下选择其他程序中的某些文本时,我想获得突出显示的文本,以便翻译它。C#解决方案是受欢迎的,因为这(文本获取)是一个相对独立的组件。

一种可能的解决方案是添加鼠标挂钩事件。我检测到以下消息:按住鼠标左键拖动,然后释放左键。然后我将CTRL-C发送到程序,并从剪贴板中获取文本。

我保存并恢复剪贴板,这样大多数程序都能很好地使用该方法。但我观察到一些程序会在消息循环中处理类似WM_KEYUP的事件。对于这些程序,我发送虚假消息!有没有其他更安全的方法来获取突出显示的文本?

我试图找到一些API调用来获取两个鼠标光标位置之间的文本,但找不到一个。

在Windows中,如何使用C++或C#在属于另一进程的窗口中获取高亮显示的文本

编写与其他程序交互的Windows程序的正确方法是使用UI Automation。具体来说,您将编写一个UI自动化客户端。

它需要一些工作,但UI自动化解决方案几乎可以与其他所有应用程序配合使用。一个基于钩子和消息的破解解决方案也需要做很多工作,但它非常脆弱。它只适用于特定上下文中的特定类型的应用程序。很多事情都可能出错。