获取任何活动窗口的内容

时间:2015-04-22 12:03:34

标签: c# wpf winapi

我正在努力寻找一种可靠的方法来获取当前位于前台的窗口的内容/文本。它应该能够确定用户当前正在使用的每个可能程序的文本,如果可能的话

我尝试了什么:

  • 获取当前活动窗口的屏幕截图,应用一些过滤器并运行 OCR算法(tesseract .Net wrapper)。这有效,但需要很长时间,而且不是很准确。
  • 然后我尝试了一些 Windows API函数(FindWindow和SendMessage),如here所述。我可以让它运行标准编辑器(记事本),但不适用于大多数其他程序
  • 我还尝试使用 AutoHotKey WinGetText功能,再次使用.Net Wrapper。在这里,我只是得到一些关于窗口的信息,但绝不是它的文字......

不幸的是,现在,我没有任何其他想法该做什么,因为我被困在各方面......有人有经验或者知道一种有效的方法吗?任何建议都非常感谢

1 个答案:

答案 0 :(得分:0)

很难找到从应用程序中检索文本的单一解决方案。将需要针对不同程序的不同方法。

对于AutoHotkey,使用Acc.ahk的AccViewer是首选的最佳方法。 Acc适用于各种控件以及控件中的元素,它可以覆盖比AutoHotkey的ControlGet命令更多的控件类型。

Acc Library [AHK_L](2012年9月27日更新) - 脚本和功能 - AutoHotkey社区
https://autohotkey.com/board/topic/77303-acc-library-ahk-l-updated-09272012/

Accessible Info Viewer - Alpha Release(2012-09-20) - 脚本和功能 - AutoHotkey社区
https://autohotkey.com/board/topic/77888-accessible-info-viewer-alpha-release-2012-09-20/

描述一些其他文本检索方法的链接:

AutoHotKey ControlGet

另请注意:

COM(组件对象模型)由AutoHotkey本机处理。它可用于从Internet Explorer中的Web元素检索文本,通过VBA代码,可以从MS Office程序(如MS Excel和MS Word)中检索文本。