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

laiser

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

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

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

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

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

Josski Molodoi

Активный
183
85
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('Не существует окна с таким именем.')