如何获得窗口或全屏截图(没有PIL)? [英] How to Get a Window or Fullscreen Screenshot (without PIL)?
本文介绍了如何获得窗口或全屏截图(没有PIL)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用python3,我希望获得另一个窗口(不是我的应用程序的一部分)的句柄,这样我就可以:
- 直接将该窗口捕获为屏幕截图,或
- 确定其位置和大小并以其他方式捕获它
如果重要,我使用的是Windows XP(编辑:也适用于Windows 7)。
我找到了this solution,但它不完全是我需要的,因为它是全屏的,更重要的是,据我所知,PIL还不支持3.x。
推荐答案
下面介绍如何在Win32中使用PIL完成此操作。给定一个窗口句柄(hwnd
),您应该只需要最后4行代码。前面的代码只是搜索标题中带有"Firefox"的窗口。由于PIL的源代码可用,您应该能够查看ImageGrab.grab(bbox)
方法并找出实现此操作所需的Win32代码。
from PIL import ImageGrab
import win32gui
toplist, winlist = [], []
def enum_cb(hwnd, results):
winlist.append((hwnd, win32gui.GetWindowText(hwnd)))
win32gui.EnumWindows(enum_cb, toplist)
firefox = [(hwnd, title) for hwnd, title in winlist if 'firefox' in title.lower()]
# just grab the hwnd for first window matching firefox
firefox = firefox[0]
hwnd = firefox[0]
win32gui.SetForegroundWindow(hwnd)
bbox = win32gui.GetWindowRect(hwnd)
img = ImageGrab.grab(bbox)
img.show()
这篇关于如何获得窗口或全屏截图(没有PIL)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文