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

问题描述 投票:0回答:3

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

例如,假设我正在运行 calc.exe。我想截取 myprogram.py 中向用户显示的内容的屏幕截图。

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

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

python
3个回答
8
投票

捕获屏幕截图很容易。只需安装 Python Imaging Library 并使用

ImageGrab.grab()
函数即可返回带有屏幕截图的 Image 实例。

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

hwnd = winGuiAuto.findTopWindow(title)
rect = win32gui.GetWindowPlacement(hwnd)[-1]
image = ImageGrab.grab(rect)

但是,捕获屏幕是最容易的部分。如果您想分析屏幕截图中的内容,则会遇到很多麻烦。这可能是做你想做的事情的错误方法,应该作为最后的手段。

在大多数情况下,使用 Windows api 直接读取窗口元素的内容会更容易,但这不适用于某些第 3 方 GUI 工具包。这不在您的问题范围内,因此我不会在这里详细说明,但您应该阅读上面提到的

winGuiAuto.py
模块的源代码,了解如何执行此操作的示例,并检查
pywinauto
库。


3
投票

ImageGrab 模块仅适用于 Windows。 pyscreenshot 模块是一个更好的替代品,可用于将屏幕内容复制到 PIL 或 Pillow 图像内存。请阅读下面的链接了解更多信息。

https://pypi.python.org/pypi/pyscreenshot


0
投票

输出: 温度模型性能: 梅:1.23456789 平均SE:2.3456789 RMSE:1.52345678

湿度模型性能: 梅:2.3456789 平均SE:5.6789012 RMSE:2.38145678

第二天预计气温:26.12345678 第二天的预测湿度:62.3456789

© www.soinside.com 2019 - 2024. All rights reserved.