是否可以从另一个python程序中获取正在运行的程序(带有GUI)的屏幕截图?如果是这样,我可以使用哪些步骤和库?(在Windows上)
例如,假设我正在运行calc.exe。我想截取从myprogram.py向用户显示的屏幕截图。
我的目标是分析受监视程序中显示的内容。
如果无法将屏幕截图隔离到正在运行的预定义程序中,我想我将必须拍摄全屏屏幕截图,但这不是很实用。
捕获屏幕截图很容易。只需安装Python Imaging Library,然后使用该ImageGrab.grab()
函数返回带有屏幕截图的Image实例。
捕获指定的窗口要复杂一些,因为您需要窗口坐标。我建议您安装win32api模块并使用一个名为winGuiAuto.py的小模块。完成此操作后,您可以执行以下操作:
hwnd = winGuiAuto.findTopWindow(title)
rect = win32gui.GetWindowPlacement(hwnd)[-1]
image = ImageGrab.grab(rect)
但是,捕获屏幕是容易的部分。如果您想分析屏幕快照中的内容,那么您会遇到很多麻烦。这可能是做您想做的事情的错误方法,应该留给万不得已。
在大多数情况下,使用Windows API来直接读取窗口元素的内容会更容易,但不适用于某些第三方GUI工具包。这不在您的问题范围之内,因此在此不做详细说明,但是您应该阅读上述winGuiAuto.py
模块的源代码,以获取有关如何执行此操作以及检查pywinauto
库的示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句