我试图在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发布于 2021-01-14 01:33:04
我不知道我是否正确理解了你的问题,但我认为你的问题是,在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
https://stackoverflow.com/questions/65706228
复制相似问题