Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows中获取鼠标光标下的单词_Windows_Automation_Accessibility_Translation_Nlp - Fatal编程技术网

在Windows中获取鼠标光标下的单词

在Windows中获取鼠标光标下的单词,windows,automation,accessibility,translation,nlp,Windows,Automation,Accessibility,Translation,Nlp,各位好, 我和一位朋友正在讨论一个新项目的可能性:一个翻译程序,每当你在任何控件中的任何单词上悬停时,它都会弹出一个翻译,即使是静态的、不可编辑的。我知道有很多浏览器插件在网页上做这类事情;我们正在考虑如何在系统范围内(在Windows上)实现它 当然,关键的困难在于找出用户悬停在上面的单词。我知道MSAA和自动化,但据我所知,这些东西只允许您获取控件的全部内容,而不是鼠标所覆盖的特定单词 我偶然发现了这个(专有)应用程序,它几乎完全实现了我们想要做的事情: 不知何故,他们能够在几乎任何应用程序

各位好,

我和一位朋友正在讨论一个新项目的可能性:一个翻译程序,每当你在任何控件中的任何单词上悬停时,它都会弹出一个翻译,即使是静态的、不可编辑的。我知道有很多浏览器插件在网页上做这类事情;我们正在考虑如何在系统范围内(在Windows上)实现它

当然,关键的困难在于找出用户悬停在上面的单词。我知道MSAA和自动化,但据我所知,这些东西只允许您获取控件的全部内容,而不是鼠标所覆盖的特定单词

我偶然发现了这个(专有)应用程序,它几乎完全实现了我们想要做的事情:

不知何故,他们能够在几乎任何应用程序中获得用户悬停的确切单词(在一些应用程序中,尤其是Windows资源管理器中,它似乎有问题)。它甚至可以从自定义控件中获取文本。一开始我认为它一定是在使用OCR。但即使我将字体缩小到完全无法阅读的程度,它仍然可以完美地识别单词。(然而,如果我把字体改成Wingdings,它什么也认不出来。但也许这是出于设计?)

关于如何完成这项看似不可能的任务,有什么想法吗


编辑:它不适用于Wingdings,但适用于其他一些无意义的字体,所以我已经确认它不能是OCR。

您可以捕获GDI调用,将文本输出到显示器,然后确定光标落在哪个单词的边界框中。

对于GDI控件,您可以获得控件的位置和大小,你通常可以得到字体信息。例如,你会使用。一旦你有了它,你就可以得到鼠标相对于控件位置的位置,并使用其中一个,也许类似于找出光标下的东西。我很确定答案就在这个方向上


您可以在另一个应用程序上运行
dumpbin/imports
,查看它们调用的API。

ahahah!果然,当我看dumpbin(谢谢杰夫)时,看起来他们就是这么做的。@Paul:你还记得到底用了哪些电话吗?