You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.6 KiB
50 lines
1.6 KiB
5 years ago
|
# PyGetWindow
|
||
|
# A cross-platform module to find information about the windows on the screen.
|
||
|
|
||
|
"""
|
||
|
|
||
|
# Work in progress
|
||
|
|
||
|
# Useful info:
|
||
|
#https://stackoverflow.com/questions/373020/finding-the-current-active-window-in-mac-os-x-using-python
|
||
|
#https://stackoverflow.com/questions/7142342/get-window-position-size-with-python
|
||
|
|
||
|
|
||
|
win32 api and ctypes on Windows
|
||
|
cocoa api and pyobjc on Mac
|
||
|
Xlib on linux
|
||
|
|
||
|
|
||
|
Possible Future Features:
|
||
|
get/click menu (win32: GetMenuItemCount, GetMenuItemInfo, GetMenuItemID, GetMenu, GetMenuItemRect)
|
||
|
"""
|
||
|
|
||
|
__version__ = '0.0.5'
|
||
|
|
||
|
import sys
|
||
|
import collections
|
||
|
|
||
|
|
||
|
class PyGetWindowException(Exception):
|
||
|
pass
|
||
|
|
||
|
|
||
|
def pointInRect(x, y, left, top, width, height):
|
||
|
return left < x < left + width and top < y < top + height
|
||
|
|
||
|
|
||
|
if sys.platform == 'darwin':
|
||
|
raise NotImplementedError('PyGetWindow currently does not support macOS. If you have Appkit/Cocoa knowledge, please contribute! https://github.com/asweigart/pygetwindow') # TODO - implement mac
|
||
|
elif sys.platform == 'win32':
|
||
|
from ._pygetwindow_win import Win32Window, getActiveWindow, getWindowsAt, getWindowsWithTitle, getAllWindows, getAllTitles
|
||
|
Window = Win32Window
|
||
|
else:
|
||
|
raise NotImplementedError('PyGetWindow currently does not support Linux. If you have Xlib knowledge, please contribute! https://github.com/asweigart/pygetwindow')
|
||
|
|
||
|
|
||
|
# NOTE: `Rect` is a named tuple for use in Python, while structs.RECT represents
|
||
|
# the win32 RECT struct. PyRect's Rect class is used for handling changing
|
||
|
# geometry of rectangular areas.
|
||
|
Rect = collections.namedtuple('Rect', 'left top right bottom')
|
||
|
Point = collections.namedtuple('Point', 'x y')
|
||
|
Size = collections.namedtuple('Size', 'width height')
|