以下のスクリプトでは、一連のコマンドを実行しようとしています。しかし、F1キーを押して実行すると、内側のループが完了するのを待つことなく、コマンドは両方ともSendAndLoopFor()
の呼び出しをすぐに実行します。ループ内の関数補完を待つ方法
関数内にリターンを追加し、その代わりに変数を代入することによってこれを強制しようとしましたが、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ミリ秒です。これは意図的ですか?あなたの現在の遅延がほとんど知覚できないので。 –