PyWin32: обнаружить «готово» перед повторным использованием SendKeys? - PullRequest
0 голосов
/ 27 сентября 2019

Я использую следующий код для отправки нажатий клавиш в приложение:

import win32com.client
import time
process_id = 2032 # I change this value if needed
shell = win32com.client.Dispatch("WScript.Shell")
shell.AppActivate(process_id)
shell.SendKeys('^o')
time.sleep(.5)
# more input ...

Проблема в том, что в какой-то момент все идет вниз, что означает: приложение зависает ( непредсказуемо для того, какдолго и когда! ) по какой-то причине с неприятными последствиями.Например, вместо нажатия кнопки «ОК» с помощью команды {ENTER}, это нажатие клавиши делает что-то еще.После этого все нажатия клавиш запутывают, потому что они не делают то, что им предназначалось.Есть ли разница между использованием time.sleep и win32api.sleep?И есть ли систематический способ проверить, находится ли приложение, которому я отправляю нажатия клавиш, снова в стабильном состоянии готовности?

1 Ответ

0 голосов
/ 27 сентября 2019

Если приложение разработано вами, вы можете использовать SendMessageTimeout, чтобы проверить реакцию окна приложения.Если время ожидания ответа истекло, приложение считается зависшим (не в состоянии готовности).

...