async def send_hotkey(window_handle: int, modifers: List[Keycode], key: Keycode): """ Send a hotkey Args: window_handle: Handle to the window to send the hotkey to modifers: Keys to hold down key: The key to press """ for modifier in modifers: user32.SendMessageW(window_handle, 0x100, modifier.value, 0) user32.SendMessageW(window_handle, 0x100, key.value, 0) user32.SendMessageW(window_handle, 0x101, key.value, 0) for modifier in modifers: user32.SendMessageW(window_handle, 0x101, modifier.value, 0)
def instance_login(window_handle: int, username: str, password: str): """ Login to an instance on the login screen Args: window_handle: Handle to window username: Username to login with password: Password to login with """ def send_chars(chars: str): for char in chars: user32.SendMessageW(window_handle, 0x102, ord(char), 0) send_chars(username) # tab user32.SendMessageW(window_handle, 0x102, 9, 0) send_chars(password) # enter user32.SendMessageW(window_handle, 0x102, 13, 0)
async def timed_send_key(window_handle: int, key: Keycode, seconds: float): """ Send a key for a number of seconds Args: window_handle: Handle to window to send key to key: The key to send seconds: Number of seconds to send the key """ keydown_task = asyncio.create_task( _send_keydown_forever(window_handle, key)) await asyncio.sleep(seconds) keydown_task.cancel() user32.SendMessageW(window_handle, 0x101, key.value, 0)
async def _send_keydown_forever(window_handle: int, key: Keycode): while True: user32.SendMessageW(window_handle, 0x100, key.value, 0) await asyncio.sleep(0.05)
def send_chars(chars: str): for char in chars: user32.SendMessageW(window_handle, 0x102, ord(char), 0)