繁体   English   中英

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

[英]In Windows how to get highlighted text in a window that belongs to another process using C++ or C#?

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

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

我保存并还原了剪贴板,因此大多数程序都可以使用该方法正常工作。 但是我观察到某些程序会在其消息循环中处理诸如WM_KEYUP之类的事件。 对于这些程序,我发送虚假消息! 还有另一种更安全的方式来获取突出显示的文本吗?

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

编写与另一个程序GUI界面进行交互的Windows程序的正确方法是使用UI自动化 具体来说,您将编写一个UI Automation Client

这需要一些工作,但是UI自动化解决方案几乎可以与所有其他应用程序一起使用。 一个基于钩子和消息的hacky解决方案也需要很多工作,但它非常脆弱。 它仅在某些情况下适用于某些类型的应用程序。 很多事情都会出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM