【问题标题】:pyautogui and win32gui screenshoot background windowpyautogui 和 win32gui 截图背景窗口
【发布时间】:2021-06-16 05:10:21
【问题描述】:

我正在尝试使用特定背景窗口的 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


【问题讨论】:

    标签: python pywin32 pyautogui


    【解决方案1】:

    pyautogui 只能捕获屏幕。我们可以使用win32ui.createBitmap()截图背景窗口。复制 original answer 并进行一些修改以避免其 cmets 中描述的黑色图像问题:

    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, width, 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', 0, 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')    
    

    【讨论】:

      猜你喜欢
      • 2021-01-04
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多