Страницы

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

четверг, 9 января 2020 г.

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

#python #windows


Установил себе модуль win32com.client
В нём можно сделать имитацию нажатия клавиш (А ля Ctrl + C):

shell = win32com.client.Dispatch('WScript.Shell')
shell.SendKeys('^a^x')


Однако в процессе появилась одна очень странная особенность: все эти имитация нажатия
запускаются в фоновом потоке. В моём случае это недопустимо. Каким образом сделать
так, чтобы вся программа ждала, пока сымитируется нажатие? Пробовал threading - получилось,
однако программа теперь вместо 0.1с. работает 3с, что недопустимо.
    


Ответы

Ответ 1



Если не принципиально использование модуля 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

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

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