#python #winapi #auto #pywinauto
Вопрос:
Я хочу имитировать нажатие клавиатуры в приложении на задней панели и пытаюсь использовать pywinauto для этого, хотя я могу подключиться к окну, но когда я использую send_keys или keyboard.send_keys, я покажу ошибку
M.keyboard.send_keys('{a down}')
File "C:UsersHankanaconda3libsite-packagespywinautoapplication.py", line 180, in __call__
raise AttributeError("Neither GUI element (wrapper) "
AttributeError: Neither GUI element (wrapper) nor wrapper method 'send_keys' were found (typo?)
ниже приведен мой код
Я пытаюсь найти какой-то ответ в Google, но вижу ту же проблему, поэтому приходите сюда, чтобы задать вопрос.
import win32gui
from pywinauto.application import Application
from pywinauto.keyboard import send_keys, KeySequenceError
import win32process
def get_window_pid(title):
hwnd = win32gui.FindWindow(None, title)
threadid,pid = win32process.GetWindowThreadProcessId(hwnd)
return pid
hwnd = get_window_pid('Greedy snake')
print(hwnd)
M=app.connect(process=hwnd)
form = app.window(title_re="Greedy snake")
while True:
sleep(2)
form.keyboard.send_keys('{a down}')
form.keyboard.send_keys('{a up}')
Комментарии:
1. Используйте автоматизацию пользовательского интерфейса. pywinauto с
uia
бэкэндом-это готовая к использованию реализация Python.
Ответ №1:
Это совершенно неправильное использование pywinauto и много ненужного кода. keyboard
является модулем, это не атрибут form
(в сообщении об ошибке говорится, что элемент с именем=»клавиатура», конечно, не найден!). Используйте этот код:
from pywinauto import Application
app = Application(backend="win32").connect(title_re="Greedy snake", timeout=10)
form = app.window(title_re="Greedy snake")
form.type_keys('{a down}')
form.type_keys('{a up}')
Стоит внимательно прочитать документы о pywinauto, начиная с этого: https://pywinauto.readthedocs.io/en/latest/getting_started.html, затем это: https://pywinauto.readthedocs.io/en/latest/wait_long_operations.html