【问题标题】:autohotkey loop with if statement inside内部带有 if 语句的 autohotkey 循环
【发布时间】:2021-04-18 17:16:11
【问题描述】:

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

【问题讨论】:

    标签: loops macros autohotkey


    【解决方案1】:

    我不知道你的问题是否正确,但我认为你的问题是在 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

    【讨论】:

      猜你喜欢
      • 2012-10-24
      • 1970-01-01
      • 2014-02-19
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      相关资源
      最近更新 更多