A Window
for windows on Windows™.¶
Systa is a Microsoft Windows automation library, built for people who aren’t Microsoft Windows programming gurus.
Basic Usage
>>> from systa.windows import current_windows
>>> "Untitled - Notepad" in current_windows
True
>>> "🍔" in current_windows
False
>>> notepad = current_windows["Untitled - Notepad"][0]
>>> notepad.maximized
False
>>> notepad.maximized = True # it's now maximized
>>> notepad.maximized
True
For more guidance see Finding Windows and Doing Stuff to Windows.
Behold, the power of the WinEvent¶
Often you’ll want to do something to a window when something else happens. One solution to this is to just run a tight loop querying all the open windows every X seconds. Instead of this, why don’t we have Windows itself tell us when things happen and then execute our code doing whatever is we want?
from systa.events.decorators import listen_to, filter_by
from systa.events.store import callback_store
from systa.events.types import EventData
@filter_by.require_size_is_less_than(200, 200)
@filter_by.require_title("*Notepad")
@listen_to.restore
@listen_to.create
def a_func_to_do_the_thing(event_data: EventData):
print(f"Notepad restored or created! ({event_data.window.width}, {event_data.window.height})")
callback_store.run(.6)
In this example, any time a window is created or restored from the minimized state,
Windows runs our code. Our code includes the @filter_by
decorators that only permit
a_func_to_do_the_thing
to run if the window’s title ends with “Notepad” and has a
size of less than 200x200.
If those criteria are met, then we resize the window to 120x400.
See more at Events.