#HotIfTimeout

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

#HotIfTimeout Timeout

パラメータ

Timeout

型:整数

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

備考

このディレクティブが指定されないときは、1000(ミリ秒)が設定されたものとして動作します。

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

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

HKEY_CURRENT_USER\Control Panel\Desktop

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

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

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

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

#HotIf

#HofIfのタイムアウトを1000ミリ秒から10ミリ秒に変更します。

#HotIfTimeout 10