1

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

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

我保存并恢复剪贴板,因此大多数程序都可以很好地使用该方法。但我观察到一些程序会在它们的消息循环中处理 WM_KEYUP 之类的事件。对于这些程序,我发送虚假消息!还有另一种更安全的方法来获取突出显示的文本吗?

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

4

1 回答 1

1

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

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

于 2013-08-30T16:45:14.687 回答