如何获得窗口或全屏截图(没有PIL)? [英] How to Get a Window or Fullscreen Screenshot (without PIL)?

查看:36
本文介绍了如何获得窗口或全屏截图(没有PIL)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用python3,我希望获得另一个窗口(不是我的应用程序的一部分)的句柄,这样我就可以:

  1. 直接将该窗口捕获为屏幕截图,或
  2. 确定其位置和大小并以其他方式捕获它

如果重要,我使用的是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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆