在Windows中获取鼠标光标下的单词
各位好, 我和一位朋友正在讨论一个新项目的可能性:一个翻译程序,每当你在任何控件中的任何单词上悬停时,它都会弹出一个翻译,即使是静态的、不可编辑的。我知道有很多浏览器插件在网页上做这类事情;我们正在考虑如何在系统范围内(在Windows上)实现它 当然,关键的困难在于找出用户悬停在上面的单词。我知道MSAA和自动化,但据我所知,这些东西只允许您获取控件的全部内容,而不是鼠标所覆盖的特定单词 我偶然发现了这个(专有)应用程序,它几乎完全实现了我们想要做的事情: 不知何故,他们能够在几乎任何应用程序中获得用户悬停的确切单词(在一些应用程序中,尤其是Windows资源管理器中,它似乎有问题)。它甚至可以从自定义控件中获取文本。一开始我认为它一定是在使用OCR。但即使我将字体缩小到完全无法阅读的程度,它仍然可以完美地识别单词。(然而,如果我把字体改成Wingdings,它什么也认不出来。但也许这是出于设计?) 关于如何完成这项看似不可能的任务,有什么想法吗在Windows中获取鼠标光标下的单词,windows,automation,accessibility,translation,nlp,Windows,Automation,Accessibility,Translation,Nlp,各位好, 我和一位朋友正在讨论一个新项目的可能性:一个翻译程序,每当你在任何控件中的任何单词上悬停时,它都会弹出一个翻译,即使是静态的、不可编辑的。我知道有很多浏览器插件在网页上做这类事情;我们正在考虑如何在系统范围内(在Windows上)实现它 当然,关键的困难在于找出用户悬停在上面的单词。我知道MSAA和自动化,但据我所知,这些东西只允许您获取控件的全部内容,而不是鼠标所覆盖的特定单词 我偶然发现了这个(专有)应用程序,它几乎完全实现了我们想要做的事情: 不知何故,他们能够在几乎任何应用程序
编辑:它不适用于Wingdings,但适用于其他一些无意义的字体,所以我已经确认它不能是OCR。您可以捕获GDI调用,将文本输出到显示器,然后确定光标落在哪个单词的边界框中。对于GDI控件,您可以获得控件的位置和大小,你通常可以得到字体信息。例如,你会使用。一旦你有了它,你就可以得到鼠标相对于控件位置的位置,并使用其中一个,也许类似于找出光标下的东西。我很确定答案就在这个方向上
您可以在另一个应用程序上运行
dumpbin/imports
,查看它们调用的API。ahahah!果然,当我看dumpbin(谢谢杰夫)时,看起来他们就是这么做的。@Paul:你还记得到底用了哪些电话吗?