2

次のコードが機能する可能性があると思いましたが、機能しませんでした。その理由はおそらく、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
4

1 に答える 1

0

これはあなたが探しているものですか?

^w::
WinGet, WinID,, A
ThreadID:=DllCall("GetWindowThreadProcessId", "Int", WinID, "Int", "0")
MsgBox, %ThreadID%
Return
于 2012-11-29T07:39:46.150 に答える