如何捕获正在运行的程序的屏幕输出?

Yoh*_*n D 2 python

是否可以从另一个python程序中截取正在运行的程序(使用GUI)的屏幕截图?如果是这样,我可以使用哪些步骤和库?(在Windows上)

例如,假设我运行了calc.exe.我想从myprogram.py中截取显示给用户的内容.

我的目标是分析监控程序上显示的内容.

如果无法将屏幕截图分离为正在运行的预定义程序,我想我将不得不截取全屏截图,但这不太实用.

Ped*_*eck 7

捕获屏幕截图很容易.只需安装Python Imaging Library并使用该ImageGrab.grab()函数返回带有屏幕截图的Image实例.

捕获指定的窗口有点复杂,因为您需要窗口坐标.我建议你安装win32api模块并使用一个名为winGuiAuto.py的小模块.一旦你这样做,你可以做这样的事情:

hwnd = winGuiAuto.findTopWindow(title)
rect = win32gui.GetWindowPlacement(hwnd)[-1]
image = ImageGrab.grab(rect)
Run Code Online (Sandbox Code Playgroud)

但是,捕获屏幕很容易.如果你想分析屏幕截图中的内容,你会遇到很多复杂问题.这可能是做你想做的错误的方法,应该留作最后的手段.

在大多数情况下,使用windows api更容易直接读取窗口元素的内容,但这不适用于某些第三方GUI工具包.这不在你的问题范围内,所以我不在这里详细说明,但你应该阅读winGuiAuto.py上面提到的模块的源代码,以获取有关如何执行此操作的示例,以及检查pywinauto库.