Как сделать скриншот определенного окна? (Питон)

Итак, я хочу сделать скриншот определенного окна со специальным заголовком

Я пробовал этот код:

import pyautogui
import win32gui

def screenshot(window_title=None):
    if window_title:
        hwnd = win32gui.FindWindow(None, window_title)
        if hwnd:
            win32gui.SetForegroundWindow(hwnd)
            x, y, x1, y1 = win32gui.GetClientRect(hwnd)
            x, y = win32gui.ClientToScreen(hwnd, (x, y))
            x1, y1 = win32gui.ClientToScreen(hwnd, (x1 - x, y1 - y))
            im = pyautogui.screenshot(region=(x, y, x1, y1))
            return im
        else:
            print('Window not found!')
    else:
        im = pyautogui.screenshot()
        return im

if (im := screenshot('Calculator')):
    im.show()

Да, это работает, но как я могу сделать скриншот окна, не выводя его на передний план?


person artemD3V    schedule 12.09.2020    source источник
comment
Я бы рекомендовал не устанавливать по умолчанию window_title на None. Я не знаю особенностей этого модуля, но вполне вероятно, что FindWindow выдаст ошибку, если window_title не является строкой. Даже если это не так, будут ситуации, когда это так. Возможно, используйте "" в качестве значения по умолчанию для строковых переменных.   -  person incarnadine    schedule 12.09.2020
comment
Отвечает ли это на ваш вопрос? Снимок экрана Python неактивного окна PrintWindow + win32gui   -  person incarnadine    schedule 12.09.2020