带有 if 语句的 autohotkey 循环

autohotkey loop with if statement inside

我试图在 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