前と後のアクション
詳細モード。 アプリ グループ ページの Before と After タブと、スクリプト ページの Before/After のタイムアウト は、詳細モードでだけ表示されます。設定した Before と After のスクリプトは、シンプル モードでも実行され続けます。
Before スクリプトはアプリ グループが実行するすべてのアクションの前に実行され、After スクリプトはアクションが終わった後に実行されます。グループのすべてのアクションに共通する処理に使います。たとえば、先にウィンドウを前面に出す、クリップボードを保存して後で元に戻す、ログを記録する、などです。
これらは、グループでのすべての一致を包みます。ジェスチャ、ホットキー、テキスト展開のいずれもです。グローバル イベントは包みません。
設定する
- アプリ グループ でグループを選択し、Before と After カードを見つけます。
- すべてのアクションの前 ① で カスタム を選びます。
- 記述方法 ② で、スクリプトの書き方 (ステップ、スクリプト、または AutoHotkey がオンの場合は AutoHotkey) を選びます。その後、アクションと同じように記述します。ステップとスクリプト言語を参照してください。
- すべてのアクションの後 ③ でも同じことを行うか、グローバルから継承 のままにします。
- 変更を適用します。
2 つにはそれぞれ独自の選択肢があります。
| 選択肢 | 実行されるもの |
|---|---|
| グローバルから継承 (既定) | グローバル グループの Before (または After) スクリプトがあれば、それを実行します。なければ何も実行しません。 |
| カスタム | このグループ独自のスクリプト。中身のないカスタム スクリプトは、なし と同様に何も実行しません。 |
| なし | グローバル グループにスクリプトがあっても、何も実行しません。 |
グローバル グループのスクリプト は、グローバル グループの同じカードで設定します。グローバルの上には継承元がないため、選択肢は カスタム と なし だけです。これは、グローバルから継承 のすべてのグループが実行するものであり、グローバル自身のアクションの前後に実行されるものでもあります。
どのグループのスクリプトが実行されるか
使われるのは、ウィンドウのグループではなく、アクションが実行されたグループ のスクリプトです。
| 実行されたアクションの出所 | 使われる Before と After |
|---|---|
| ウィンドウ自身のアプリ グループ | そのグループの選択: 独自のもの、グローバルのもの (継承)、またはなし |
| ウィンドウにグループがないため、グローバル グループ | グローバルのもの |
| ウィンドウのグループからフォールバックしたため、グローバル グループ | グローバルのもの。ウィンドウのグループのものは決して使われません |
すべての順序
ジェスチャが一致すると、次のものが厳密に 1 つずつ順番に実行されます。
- ジェスチャの下にあるウィンドウをアクティブにする (その設定がオンの場合、ジェスチャのみ)。ジェスチャの描画を参照してください。
- 押されたままの修飾キーを離す (トリガーの 押されたままの修飾キー が 離してから元に戻す の場合)。修飾キーとタイミングを参照してください。
- Before。終わるか、タイムアウトで終了するまで。
- アクション。必要なだけ時間をかけて。
- After。終わるか、タイムアウトで終了するまで。
- 押されたままの修飾キーを再び押す (手順 2 で離した場合)。
詳細:
- Before でアクションを取り消すことはできません。 Before がエラーで失敗した場合やタイムアウトで止められた場合でも、Before が終わるとアクションが実行されます。
- アクションがタイムアウトで途中で打ち切られることはありません。 After はアクションが終わってから始まります。
- すべてのアクションを停止するホットキー は、実行中の部分を停止し、残り (After を含む) をスキップします。
- 同じトリガー情報。 Before と After には、アクションと同じジェスチャ、ウィンドウ、トリガーの詳細が見えます (スクリプト リファレンスの
Context組み込み関数)。 - 一致ごとに独自の流れで実行されます。 2 つのジェスチャを続けてすばやく描くと、それぞれの流れが同時に、それぞれの順序で実行されます。
- 描画ボタンを離したときグローバル イベント はこの流れの一部ではありません。ボタンを離したときに、流れと並行して始まります。
- テキスト展開: 入力したテキストは Before の実行前に消去され、それを終わらせたキー (たとえばスペース) は、アクションの後、After の実行前に入力されます。テキスト展開を参照してください。
グループの Before と After のスクリプトがどちらもない場合、アクションは単独で実行されます。
Before/After のタイムアウト
スクリプト ページの 制限とタイムアウト カードにある Before/After のタイムアウト は、Before または After の各スクリプトが実行できる時間を制限します。既定値は 3,000 ミリ秒で、範囲は 0~60,000 です。その時間を過ぎても実行中のスクリプトは停止され、メッセージ ボックスなしで次の手順が始まります。診断コンソールには、それについての行が表示されます (診断コンソールを参照)。0 にすると、それぞれ約 20 ミリ秒になります。
この制限がアクション自体に適用されることはありません。