次のコードが機能する可能性があると思いましたが、機能しませんでした。その理由はおそらく、Throw
コマンドが自動実行セクション スレッドではなく、ホットキー スレッドで実行されるという事実にあります。
try
{
count := 0
loop {
tooltip % ++count
sleep 200
}
} catch {
}
msgbox done
Exitapp
Esc::ExitAPp
^1::throw
では、制御の流れがどのスレッドに属しているかを知る方法はありますか? AutoHotkey には、スレッド ID などの変数がありますか?
以下のコードは、両方の (疑似) スレッドが同じ数を返すことを示しています。そのため、AutoHotkey 内にスレッド ID がある場合はそれを知る必要があります。AutoHotkey スレッドは単なる関数呼び出しであるとどこかで読んだことがあります。しかし、疑似スレッドを特定する方法があるかもしれないと期待しています。
try
{
count := 0
loop {
tooltip % ++count "`nThread ID: " DllCall("GetWindowThreadProcessId", "Int", A_ScriptHwnd, "Int", "0")
sleep 200
}
} catch {
}
msgbox done
Exitapp
Esc::ExitAPp
^1::
MsgBox, % DllCall("GetWindowThreadProcessId", "Int", A_ScriptHwnd, "Int", "0")
throw
Return