PyWin32:在再次使用SendKeys之前检测到“就绪”?

时间:2019-09-27 08:50:55

标签: winapi pywin32 wsh sendkeys wscript.shell

我正在使用以下代码将击键发送到应用程序:

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 :(得分:0)

如果应用程序是您开发的,则可以使用SendMessageTimeout检查应用程序窗口的响应。如果响应超时,则认为该应用程序处于挂起状态(未处于就绪状态)。