程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了pyautogui 和 win32gui 屏幕截图背景窗口大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决pyautogui 和 win32gui 屏幕截图背景窗口?

开发过程中遇到pyautogui 和 win32gui 屏幕截图背景窗口的问题如何解决?下面主要结合日常开发的经验,给出你关于pyautogui 和 win32gui 屏幕截图背景窗口的解决方法建议,希望对你解决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,请注明来意。