#HotIfTimeout

1つの#HotIf式を評価するのにかけられる最大時間を設定します。

#HotIfTimeout Timeout

パラメータ

タイムアウト

型:整数

グローバルに適用するタイムアウト値(ミリ秒単位)。

備考

If this directive is unspecified in the script, it will behave as though set to 1000 (milliseconds).

長時間実行される式がキーボード入力処理を停止させることを防ぐため、タイムアウトを実装しています。タイムアウト値を超えた場合、式の評価は継続されますが、キーボードフックは式がすでにfalseを返したかのように続行されます。

なお、システムは独自のタイムアウトを実装しており、以下のレジストリキーにあるDWORD値LowLevelHooksTimeoutで定義されています。

HKEY_CURRENT_USER\Control Panel\Desktop

システムのタイムアウト値を超えると、スクリプトのキーボードフックの呼び出しが停止し、フックが再登録されるかスクリプトが再読み込みされるまで、フックのホットキーが動作しなくなる場合があります。フックの再登録は、通常、すべてのホットキーのサスペンドとアンサスペンドを行うことで可能です。

このタイムアウトの詳細については、マイクロソフトのドキュメントでは不明ですが、調査によると、Windows 7以降では以下のようになるようです。If LowLevelHooksTimeout is not defined, the default timeout is 300 ms. フックは10回までタイムアウトすることができますが、11回目にタイムアウトした場合は、静かに削除されます。

あるホットキーに複数の#HotIfのバリエーションがある場合、タイムアウトはそれぞれのバリエーションに独立して適用され、システムのタイムアウトを超過する可能性が高くなります。今後のアップデートで変更される可能性があります。

他のディレクティブと同様に、#HotIfTimeoutは条件付きで実行することはできません。

#HotIf

Sets the #HotIf timeout to 10 ms instead of 1000 ms.

#HotIfTimeout 10