微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 if 语句的 autohotkey 循环

如何解决带有 if 语句的 autohotkey 循环

我试图在 ahk 循环中获取一个 if 语句,以便仅在计数器变量值大于或等于 X 后才运行一些代码(在此示例中使用 10),如果满足条件,则发送一些单词到文本输入,然后再次将计数器变量重置为 0。所以我使用 IfGreaterOrEqual 但它只是绕过它。

它不起作用,它一直在无所事事。有人能解释一下我做错了什么吗?

F3::
Toggle := !Toggle
if(Toggle){
    gosub Loop1
    gosub Loop2
}
SetTimer,Loop1,% (Toggle) ? 19550 : "Off"
SetTimer,Loop2,% (Toggle) ? 306500 : "Off"
return

F4::Reload

Loop1:
vCOUNT++
sendinput word-1{Enter}
IfGreaterOrEqual,vCOUNT,10
sendinput word-2{Enter}
sendinput word-3{Enter}
vCOUNT :=0
sendinput Counter was reset,its value is Now: %vCOUNT% {Enter}
return

Loop2:
sendinput word-4{Enter}
sendinput word-5{Enter}
sendinput word-6{Enter}
sendinput word-7{Enter}
return

解决方法

我不知道我是否理解您的问题,但我认为您的问题是在 Loop1 中,条件被忽略,即使在第一次迭代中,它也会将 vCOUNT 设置回零。

所以问题在于你可以看到它以某种方式没有忽略“IfGreaterOrEqual”,因为“SendInput word-2{Enter}”没有被执行。 所以该语句只影响下一行,但你希望它影响一个完整的块。为了解决这个问题,你必须在你想要的代码块周围加上括号。 在您的“Loop1”示例中(如果我的想法正确的话),它应该是这样的:

Loop1:
    vCOUNT++
    SendInput word-1{Enter}
    IfGreaterOrEqual,vCOUNT,10
    {
        SendInput word-2{Enter}
        SendInput word-3{Enter}
        vCOUNT :=0
        SendInput Counter was reset,its value is now: %vCOUNT% {Enter}
    }
return

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。