在下面的脚本中,我尝试运行一系列命令。但是当按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'循环只有83毫秒的“睡眠”时间。这是故意的吗?因为你目前的延迟几乎感觉不到。 –