From d806ecf9477d949fb07b9a08cc6562b82aca5797 Mon Sep 17 00:00:00 2001 From: Oliver Hartmann Date: Sun, 7 May 2023 09:01:23 +0200 Subject: [PATCH] some directinput tests --- src/sendkeys.py | 34 ++++++++++++++++++++++++++++++++++ tests/test_keyboard.py | 26 ++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/src/sendkeys.py b/src/sendkeys.py index 544e937..5f1f0b6 100644 --- a/src/sendkeys.py +++ b/src/sendkeys.py @@ -1,9 +1,12 @@ from pywinauto.application import Application, ProcessNotFoundError from pywinauto.findwindows import ElementNotFoundError +import pydirectinput from src import data from src import config +pydirectinput.PAUSE = 0.001 + def send_text(text: str) -> None: app = Application() @@ -23,6 +26,37 @@ def send_text(text: str) -> None: win.type_keys('{ENTER}^A{DELETE}' + text + '{ENTER}', with_spaces=True, pause=config.conf['General']['after_sendkeys_key_wait']) +def send_directInput(text: str) -> None: + # with pydirectinput.KeyBdInput.__dictoffset__ + app = Application() + try: + app.connect(path=config.conf['General']['poe_path']) + except ProcessNotFoundError: + data.log.warning(f'App "{config.conf["General"]["poe_window_title"]}": "{config.conf["General"]["poe_path"]}" not found') + return + try: + win = app.window(title_re=config.conf['General']['poe_window_title']) + except ElementNotFoundError: + data.log.warning(f'Window Title "{config.conf["General"]["poe_window_title"]}" not found') + return + win.SetFocus() + win.wait(wait_for='active') + pydirectinput.press('return') + write_directInput(text) + pydirectinput.press('return') + pass + + +def write_directInput(text: str): + for c in text: + if c.isupper(): + pydirectinput.keyDown('shift') + pydirectinput.press(c.lower()) + pydirectinput.keyUp('shift') + else: + pydirectinput.press(c) + + def escape_mods(text: str) -> str: text = text.replace('%', '{%}') text = text.replace('+', '{+}') diff --git a/tests/test_keyboard.py b/tests/test_keyboard.py index 3ed117b..2fdf1e7 100644 --- a/tests/test_keyboard.py +++ b/tests/test_keyboard.py @@ -1,6 +1,15 @@ from src import sendkeys from src import config from src import data +import win32api +import win32gui +import win32con +from time import sleep + + +def test_send_direct(): + config.read_config(r'config.yaml') + sendkeys.send_directInput('Hello World') def test_sendkeys(): @@ -74,3 +83,20 @@ def test_ty_wo_trade(): text = '2021/03/08 23:24:52 17931875 bb3 [INFO Client 1492] @From Sinusal: Hi, how are you doing? ' message = data.Message.from_text(text) sendkeys.send_to_format('ty', message) + + +def test_win31_api(): + hwndMain = win32gui.FindWindow(None, "cmd") + hwndChild = win32gui.GetWindow(hwndMain, win32con.GW_CHILD) + while(True): + # [hwndChild] this is the Unique ID of the sub/child application/proccess + # [win32con.WM_CHAR] This sets what PostMessage Expects for input theres KeyDown and KeyUp as well + # [0x44] hex code for D + # [0]No clue, good luck! + # temp = win32api.PostMessage(hwndChild, win32con.WM_CHAR, 0x44, 0) returns key sent + temp = win32api.PostMessage(hwndChild, win32con.WM_CHAR, 0x44, 0) + + # print(temp) prints the returned value of temp, into the console + print(temp) + # sleep(1) this waits 1 second before looping through again + sleep(1)