我正在使用以下代码将击键发送到应用程序:
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有区别吗?是否有系统的方法来检查我正在发送击键的应用程序是否再次处于稳定的就绪状态?
如果应用程序是您开发的,则可以使用SendMessageTimeout
检查应用程序窗口的响应。如果响应超时,则认为该应用程序处于挂起状态(未处于就绪状态)。