AHK脚本在运行时不稳定

龙裔

我在外部HDD制造公司中工作。我需要升级数千个HDD的固件。我必须按顺序上传两个文件才能完成上传。进行手动处理不仅要花费时间,而且还可能导致人为错误。因此,我决定使用“自动热键”来自动执行击键和鼠标单击操作。我还编译了脚本。但是脚本是不稳定的。有时它工作正常。有时,控件的单击不起作用。有时,按键输入不会被完整键入。但是根据我的知识,该脚本还可以。如果有任何错误,请纠正我。我也想安全地删除驱动器,所以如果有任何编码,请也将其添加

我的过程是解释如下。

  1. 将HDD连接到PC,然后等待PC检测到HDD
  2. 打开固件上传工具
  3. 单击“重新扫描”,然后等待硬盘显示在工具中
  4. 单击浏览以获取第一个固件文件。
  5. 然后选中工具中显示的HDD附近的复选框。
  6. 单击下载,然后在下一条警告消息时按Enter。
  7. 等待下载完成,并在显示成功消息后按OK。
  8. 对第二个FW文件重复步骤3至7。
  9. 单击退出,然后安全删除硬盘。

下面是我的脚本。

Run, open "Application Location"
Winwait, Warning
if ErrorLevel
{
    MsgBox, Window timed out.
    return
}
else
{
ControlClick, OK, Warning
Winwait, Application Window name
if ErrorLevel
{
    MsgBox, WinWait timed out.
    return
}
else
{
; Upload first FW File
ControlClick, Rescan, Application Window name
ControlClick, Browse, Application Window name
Winwait, Open
if ErrorLevel
{
    MsgBox, WinWait timed out.
    return
}
else
{
SendInput, {Raw}Location of First File
Send, {Enter}
}
sleep, 1500
WinActivate, Application Window name
CoordMode, Mouse, Relative
Click 43, 126
ControlClick, Download, Application Window name
Winwait, Warning
if ErrorLevel
{
    MsgBox, WinWait timed out.
    return
}
else
{
Send, {Enter}
}
Winwait, Download Successful
if ErrorLevel
{
    MsgBox, WinWait timed out.
    return
}
else
{
ControlClick, OK, Download Successful
}
}
; Upload Second FW File
WinActivate, Application Window name
ControlClick, Rescan, Application Window name
ControlClick, Browse, Application Window name
Winwait, Open
if ErrorLevel
{
    MsgBox, WinWait timed out.
    return
}
else
{
SendInput, {Raw}Second FW File location
Send, {Enter}
}
sleep, 1500
WinActivate, Application Window name
CoordMode, Mouse, Relative
Click 43, 126
sleep, 2000
ControlClick, Download, Application Window name
Winwait, Warning
if ErrorLevel
{
    MsgBox, WinWait timed out.
    return
}
else
{
Send, {Enter}
}
Winwait, Download Successful
if ErrorLevel
{
    MsgBox, WinWait timed out.
    return
}
else
{
ControlClick, OK, Download Successful
sleep, 1500
ControlClick, Exit, Application Window name
}
}
约翰逊2

一些想法:

  1. 如果您在前几行返回错误级别,则无需将脚本的其余部分封装在Else语句中并封装括号。并不需要。

  2. WinWait的使用与WinWaitActive不同。窗口可以不激活就存在,因此除非需要在后台查找窗口,否则请始终使用WinWaitActive。使用WinWait可能会导致脚本执行在窗口实际处于活动状态之前继续经过wait语句,从而引起您正在描述的一些问题。

  3. 除非需要在Send和SendInput之间进行切换,否则请坚持使用一个或另一个...通常,出于帮助文件中说明的原因,SendInput是更可取的选项。同时使用它们(取决于所使用的程序)可能会导致有关密钥发送方式的时序问题。

  4. 在WinActivate的任何实例之后使用WinWaitActive,以确保在继续操作之前该窗口处于活动状态。

  5. 对于重复的代码,请尝试使用子例程,即gosub或函数调用。由于更改了文件位置,因此可以在调用之间使用变量来设置文件位置,或者将该变量用作函数调用的参数。如果您更改例程,这将使您不必两次重写所有内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java Desktop程序的运行时不稳定

来自分类Dev

发射操作可能会使增加字段的运行时间不稳定

来自分类Dev

调用动态方法时,“操作可能会使运行时不稳定”

来自分类Dev

Flutter iOS动画在第一次运行时就很不稳定

来自分类Dev

解决“动态” /“不稳定”的ahk_class名称?

来自分类Dev

在运行时替换Shell脚本

来自分类Dev

对int不稳定?

来自分类Dev

使用AHK脚本访问运行时生成的HTML

来自分类Dev

运行VM会使音频播放变得不稳定

来自分类Dev

运行《守望先锋》时互联网不稳定

来自分类Dev

使用 sublime 运行 python:dtype 输出不稳定

来自分类Dev

在运行时编辑shell脚本和python脚本

来自分类Dev

如何在运行“稳定” Debian的计算机上从“不稳定” Debian安装一些软件包?

来自分类Dev

迅速的sqlite不稳定

来自分类Dev

SKSpriteNode不稳定滑动?

来自分类Dev

硒测试不稳定

来自分类Dev

ECS服务不稳定

来自分类Dev

CNN培训不稳定

来自分类Dev

使手的偏航不稳定

来自分类Dev

程序输出不稳定?

来自分类Dev

网络不稳定连接

来自分类Dev

不稳定的 QSqlDatabase 行为

来自分类Dev

ServiceWorker 缓存不稳定

来自分类Dev

批处理脚本在运行时暂停

来自分类Dev

在运行时编译渲染脚本代码

来自分类Dev

在运行时从Jenkins Workflow脚本获取构建日志?

来自分类Dev

在运行时确定脚本中的shell

来自分类Dev

最新的内核稳定还是不稳定?

来自分类Dev

在python脚本中运行powershell脚本,如何使python在运行时打印powershell输出