大佬教程收集整理的这篇文章主要介绍了pyautogui 和 win32gui 屏幕截图背景窗口,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用特定背景窗口的 pyautogui 进行屏幕截图,而不将其放在前台,我该怎么做? 这是我开始的项目,但我不知道下一步是什么
在这个例子中,Chrome.exe 在后台运行,我试图在不将窗口置于前台的情况下进行屏幕截图
谢谢
#pip install pywin32
import pyautogui
import win32gui,win32API,win32con
import time
def takescreen():
myScreenshot = pyautogui.screenshot()
myScreenshot.save(r'screenshoot.png')
hwnd = win32gui.FinDWindow(None,'Chrome')
hwndChild = win32gui.Getwindow(hwnd,win32con.GW_CHILD)
hwndChild2 = win32gui.Getwindow(hwndChild,win32con.GW_CHILD)
##NEXT STEP
pyautogui 只能截屏。我们可以使用 win32ui.createBitmap()
截取背景窗口。复制 original answer 并进行一些修改以避免其评论中描述的黑色图像问题:
def takescreen(hwnd,width,height,fileName):
#hwnd is window handle
#width,height are in pixels
#filename is name of screenshot file
hwndDC = win32gui.GetWindowDC(hwnd)
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
saveDC = mfcDC.CreateCompatibleDC()
saveBitMap = win32ui.CreateBitmap()
saveBitMap.CreateCompatibleBitmap(mfcDC,height)
saveDC.SELEctObject(saveBitMap)
result = windll.user32.PrintWindow(hwnd,saveDC.GetSafeHdc(),2)
bmpinfo = saveBitMap.GeTinfo()
bmpstr = saveBitMap.GetBitmapBits(true)
im = Image.frombuffer(
'RGB',(bmpinfo['BMWidth'],bmpinfo['bmHeight']),bmpstr,'raw','BGRX',1)
win32gui.deleteObject(saveBitMap.GetHandle())
saveDC.deleteDC()
mfcDC.deleteDC()
win32gui.ReleaseDC(hwnd,hwndDC)
if result == 1:
#PrintWindow Succeeded
im.save(fileName)
#sample usage
hwnd = win32gui.FindWindow(None,'Chrome')
takescreen(hwnd,1024,768,'screenshot.png')
以上是大佬教程为你收集整理的pyautogui 和 win32gui 屏幕截图背景窗口全部内容,希望文章能够帮你解决pyautogui 和 win32gui 屏幕截图背景窗口所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。