windows - 测试窗口是否响应
问题描述
我有这个脚本来运行在线游戏,点击启动屏幕并为我输入密码。然而,自从最新的补丁以来,%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%
解决方案
您是否尝试过使用 WinWaitActive 跟踪 WinActivate?您应该能够删除 Sleep 命令。
WinActivate, MechWarrior Online
WinWaitActive, MechWarrior Online
推荐阅读
- arrays - in_array() 期望参数 2 是数组,给定对象
- java - 观察订阅者被移除/处置时要关闭的可关闭资源
- c - 为什么在写入端关闭之前,管道上的读取会阻塞?
- c# - XAML WPF - 为什么按钮的背景图像不会改变?
- ios - 构建颤振项目的Cocoapod过时错误
- java - 如何减慢 for 循环?
- php - 在 WooCommerce 订单接收页面中通过 AJAX 更新订单状态
- sql - 如何干掉一个 PostgreSQL 查询
- javascript - 尽管直接复制了 Mozilla 示例,browser.runtime.sendMessage 返回 undefined
- python - 如何在 spaCy 中添加特定的子字符串以进行标记?