スレッド
提供: AutoHotkey Wiki
AutoHotkeyは実際はパフォーマンス低下を防ぐため、擬似的なマルチスレッドを採用している。
現在のスレッドの実行中にホットキー、タイマー、メニューアイテム選択により別のスレッドが呼び出されると、割り込みにより新たなスレッドが開始され、現在のスレッドは新たなスレッドが終了するまで停止する。
割り込みは何重にも行われることが可能。
ErrorLevel や SetKeyDelayなどの変数や設定は、スレッドごとに保持され、割り込んできたスレッド内で変更されても、割り込まれたスレッド側には影響しない。
スレッドの数には上限があり、デフォルトは10だが、#MaxThreads で255まで増やす事が出来る。
各ホットキーで呼び出されるスレッドの数にも上限があり、デフォルトは1だが、#MaxThreadsPerHotkey で最大20まで設定できる。
(備考) KeyHistoryコマンドなどでキー履歴を表示すると、実行中のスレッド数が表示できる。
ListHotkeysでは、どのホットキーがスレッドを実行しているかがわかる。
スレッド優先度[編集]
全てのスレッドの優先度はデフォルトで0になる。
Threadコマンドで、現在のスレッドの優先度を変更できる。
Hotkeyコマンドの引数で、ホットキーの優先度を指定できる。
Hotstringは定義時のオプションにより優先度を指定できる。
SetTimerコマンドの引数で、タイマー起動の優先度を指定できる。
Menuコマンドの引数で、カスタムメニューアイテムの優先度を指定できる。
現在のスレッドより優先度が低い場合、割り込みは行われず、操作は無視される。
OnExitによる呼び出しは、現在スレッドの優先度にかかわらず実行される。