Установил себе модуль 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
Комментариев нет:
Отправить комментарий