Скриншот активного окна

laiser

Известный
Автор темы
181
89
Всем привет, необходимо сделать скриншот активного окна.

Использую библиотеку pyautogui, там есть функция "pyautogui.screenshot()" которая скринит весь экран.
Есть доп. аргумент region, который принимает координаты.

Я понимаю, что нужно ввести координа и он заскринит нужную область, но Если приложение находится в другом месте или размер у окна другой.

Может какую-то другую библиотеку юзать? api win32 не подходит, так как нужно и для линукс.

Подскажите пожалуйста, как мне сделать скрин активного экрана с помощью питона?
 

pomidorq

Известный
184
83
Python:
import pyautogui
import win32gui

def screenshot(window_title=None):
    if window_title:
        title_exists = win32gui.FindWindow(None, window_title)
        if title_exists:
            win32gui.SetForegroundWindow(title_exists)
            x, y, x1, y1 = win32gui.GetClientRect(title_exists)
            x, y = win32gui.ClientToScreen(title_exists, (x, y))
            x1, y1 = win32gui.ClientToScreen(title_exists, (x1 - x, y1 - y))
            im = pyautogui.screenshot(region=(x, y, x1, y1))
            return im
        else:
            print('Не существует окна с таким именем.')
    else:
        im = pyautogui.screenshot()
        return im

try:
    im = screenshot('San Andreas Multiplayer 0.3.7') #Пишешь название окна в точности до символа.
    im.show()
except:
    print('Не существует окна с таким именем.')