Получить положение и размер окна с помощью python

Как я могу получить и установить положение и размер окна (любой программы Windows) с помощью python?

Ответы

Ответ 1

Предполагая, что вы работаете в Windows, попробуйте использовать модуль pywin32 win32gui с его функциями EnumWindows и GetWindowRect.

Если вы используете Mac OS X, вы можете попробовать использовать appscript.

Для Linux вы можете попробовать один из многих интерфейсов для X11.

Изменить: Пример для Windows (не проверен):

import win32gui

def callback(hwnd, extra):
    rect = win32gui.GetWindowRect(hwnd)
    x = rect[0]
    y = rect[1]
    w = rect[2] - x
    h = rect[3] - y
    print "Window %s:" % win32gui.GetWindowText(hwnd)
    print "\tLocation: (%d, %d)" % (x, y)
    print "\t    Size: (%d, %d)" % (w, h)

def main():
    win32gui.EnumWindows(callback, None)

if __name__ == '__main__':
    main()

Ответ 2

Вы можете получить координаты окна, используя функцию GetWindowRect. Для этого вам нужен дескриптор окна, с помощью которого вы можете использовать FindWindow, если вы знаете что-то о окне (например, его название).

Чтобы вызвать функции API Win32 из Python, используйте pywin32.

Ответ 3

Для Linux вы можете использовать инструмент, который я сделал здесь. Инструмент предназначен для немного другого использования, но вы можете использовать API напрямую для своих нужд.

Инструмент установки

sudo apt-get install xdotool xprop xwininfo
git clone https://github.com/Pithikos/winlaunch.git && cd winlaunch

В терминале

>>> from winlaunch import *
>>> wid, pid = launch('firefox')
>>> win_pos(wid)
[3210, 726]

wid и pid обозначают идентификатор окна и идентификатор процесса соответственно.