Страницы

Поиск по вопросам

среда, 20 февраля 2019 г.

Как сымитировать нажатие нескольких клавиш на клавиатуре, включая специальные на Windows?

Установил себе модуль win32com.client В нём можно сделать имитацию нажатия клавиш (А ля Ctrl + C):
shell = win32com.client.Dispatch('WScript.Shell') shell.SendKeys('^a^x')
Однако в процессе появилась одна очень странная особенность: все эти имитация нажатия запускаются в фоновом потоке. В моём случае это недопустимо. Каким образом сделать так, чтобы вся программа ждала, пока сымитируется нажатие? Пробовал threading - получилось, однако программа теперь вместо 0.1с. работает 3с, что недопустимо.


Ответ

Если не принципиально использование модуля win32com.client, можно воспользоваться более удобным pywinauto (он ждёт отправки клавиш в приложение):
from pywinauto.application import Application from datetime import datetime
# Запускаем блокнот app = Application().start("notepad")
# Можно посылать спецсимволы # app.UntitledNotepad.Edit.type_keys("^a^v") # app.UntitledNotepad.Edit.type_keys("{VK_F5}")
# Вставим текущее время для проверки app.UntitledNotepad.Edit.type_keys(datetime.now().strftime("%H:%M:%S.%f"))
print(datetime.now().strftime("%H:%M:%S.%f"))
Документация по эмуляции клавиатурных нажатий
Тестировалось на Python 3.6 со свежим pywinauto, Windows 7 64-bit

Комментариев нет:

Отправить комментарий