OnExit
実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 |
キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル |
レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト
OnExit[編集]
スクリプト終了時に実行させたいサブルーチンを指定する。
OnExit [, Label, FutureUse]
Parameters[編集]
引数名 | 説明 |
---|---|
Label | 終了時に実行させたいサブルーチンのラベル名。 省略すると、終了時サブルーチンを解除する。 |
FutureUse | 将来の拡張のために確保されている。今のところこの引数は無視される。 |
Remarks[編集]
OnExitでサブルーチンを指定すると、スクリプトを終了する代わりに指定したサブルーチンが実行される。
実際にスクリプトを終了するには、サブルーチン内でExitAppコマンドを実行する必要がある。
OnExitサブルーチン内でExitAppを実行した場合、その場でスクリプトは終了する。
OnExitサブルーチンは、スレッド数の上限や割り込みの設定にかかわらず必ず割り込んで実行される。
OnExitサブルーチン内でエラーが発生した場合、スクリプトはそのまま終了する。
OnExitサブルーチンが設定された状態でExitやExitAppを終了コードを指定して実行した場合、そのコードは無視される。
OnExitサブルーチン内で再度コードを指定してExitAppを実行すれば、終了コードつきで終了できる。
A_ExitReason
変数で一番最近OnExitサブルーチンが実行されたときの終了理由を参照できる。
一度もOnExitサブルーチンが実行されていないときは、A_ExitReasonは空になる。
A_ExitReasonがとりうる値は以下のどれか。
Logoff | ユーザーがログオフしようとしている |
Shutdown | システムがシャットダウンしようとしている |
Close | WM_CLOSEやWM_QUITメッセージがメインウィンドウに送られた |
Error | スクリプトが常駐状態になっておらず、何らかのエラーが発生した |
Menu | メニューの標準項目の Exit を実行して終了しようとしたとき
|
Exit | ExitやExitAppコマンドで終了しようとした |
Reload | スクリプトがReloadコマンドやメニューアイテムで再読み込みさせられるとき |
Single | #SingleInstanceに指定されたスクリプトが新たに起動されて、前のプロセスが終了されるとき |
AHKL グローバル変数または関数内のスタティック変数に格納されたオブジェクトの __Delete
メタ関数を用いることで、OnExit
を利用しないでスクリプトの終了時に処理をすることが可能。(ただし A_ExitReasonは利用できない)
Related[編集]
OnMessage(), RegisterCallback(), OnClipboardChange, ExitApp, Shutdown, #Persistent, スレッド, Gosub, Return, Menu
Example(s)[編集]
#Persistent ; For demonstration purposes.
OnExit, ExitSub
Return
ExitSub:
If A_ExitReason <> Logoff
If A_ExitReason <> Shutdown
{
MsgBox, 4, , Are you sure you want to exit?
IfMsgBox, No, Return
}
ExitApp