首页 > 解决方案 > 测试窗口是否响应

问题描述

我有这个脚本来运行在线游戏,点击启动屏幕并为我输入密码。然而,自从最新的补丁以来,%MWOStartupTime%它变得相当不可预测,这不再可靠地工作了。我怀疑游戏正在触发一些早期的网络请求。或者其他的东西。

所以这里的问题是:我可以以某种方式测试给定窗口是否不仅存在而且是否响应,而不是等待固定时间?这样我就可以循环,等待响应窗口然后开始“点击”​​。

我也对其他想法/解决方案感到高兴。如果结果证明我需要使用 WinAPI,我也可以用真正的编程语言重写它。

Run, MWOClient.exe, %MWODirectory%

; Wait for the Client to launch
WinWait, MechWarrior Online,, 20
WinActivate, MechWarrior Online

; Wait until the window is responsive
Sleep, %MWOStartupTime%

; Press Escape a few times to skip the loading screens
Loop %MWOScreenLoops% {
    WinActivate, MechWarrior Online
    Sleep, %MWOScreenTime%
    SendInput {Esc}
}

; Click the password textbox
WinActivate, MechWarrior Online
Click %MWOPasswordBoxXCoord%, %MWOPasswordBoxYCoord%
Sleep 500

; Type the password
WinActivate, MechWarrior Online
SendInput %MWOPassword%
Sleep 500

; Copy the password to the clipboard in case the 
; password input fails
clipboard = %MWOPassword%

; Click login
Click %MWOPlayButtonXCoord%, %MWOPlayButtonYCoord%

标签: windowsautomationautohotkey

解决方案


您是否尝试过使用 WinWaitActive 跟踪 WinActivate?您应该能够删除 Sleep 命令。

WinActivate, MechWarrior Online WinWaitActive, MechWarrior Online

https://www.autohotkey.com/docs/commands/WinWaitActive.htm


推荐阅读