在AutoHotkey中查找线程ID

时间:2012-11-28 22:31:08

标签: syntax autohotkey

我认为以下代码可能有效,但没有。原因可能在于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

1 个答案:

答案 0 :(得分:0)

这是你在找什么?

^w::
WinGet, WinID,, A
ThreadID:=DllCall("GetWindowThreadProcessId", "Int", WinID, "Int", "0")
MsgBox, %ThreadID%
Return