【发布时间】:2017-09-17 07:17:35
【问题描述】:
在下面包含的脚本中,我尝试运行一系列命令。但是当按 F1 运行时,该命令将立即运行两个 SendAndLoopFor() 调用,而无需等待内部循环完成。
我试图通过在函数中添加一个 return "" 来“强制”这个等待,并用它分配一个变量而不是 Foo := SendAndLoopFor(),但即使那样它也不会等待操作。
有没有办法在执行下一个命令之前等待SendAndLoopFor() 命令完成?
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#MaxThreadsPerHotkey 13
#SingleInstance
F1::
Done = 0
Toggle := !Toggle
Loop
{
If (!Toggle)
Break
SendAndLoopFor("4", -13600)
SendAndLoopFor("5", -13600)
}
return
SendAndLoopFor(TSend="", Timeout=0)
{
Send %TSend%
SetTimer, LoopLimit, %Timeout%
Loop
{
If(!Toggle)
Break
If(done == 1)
{
done = 0
Break
}
MouseClick, left
sleep 83
}
}
LoopLimit:
Done = 1
Return
【问题讨论】:
-
您需要在 SendAndLoopFor() 之前返回。你指的是一个名为 LoopLimit 的不存在的标签
-
啊,我确实忘了包括那篇文章。稍后会编辑它
-
AutoHotkey 确实按顺序运行它们,但您的
SendAndLoopFor循环的Sleep时间只有 83 毫秒。这是故意的吗?因为您目前的延迟几乎是难以察觉的。 -
@DavidMetcalfe 但循环将继续,直到中断或超时持续时间。示例中为 13.6 秒。这就是 settimer 部分的用途
标签: autohotkey