OnExit

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

OnExit[編集]

スクリプト終了時に実行させたいサブルーチンを指定する。

OnExit [, Label, FutureUse]

Parameters[編集]

引数名 説明
Label 終了時に実行させたいサブルーチンのラベル名。
省略すると、終了時サブルーチンを解除する。
FutureUse 将来の拡張のために確保されている。今のところこの引数は無視される。

Remarks[編集]

OnExitでサブルーチンを指定すると、スクリプトを終了する代わりに指定したサブルーチンが実行される。
実際にスクリプトを終了するには、サブルーチン内でExitAppコマンドを実行する必要がある。
OnExitサブルーチン内でExitAppを実行した場合、その場でスクリプトは終了する。

OnExitサブルーチンは、スレッド数の上限や割り込みの設定にかかわらず必ず割り込んで実行される。

OnExitサブルーチン内でエラーが発生した場合、スクリプトはそのまま終了する。

OnExitサブルーチンが設定された状態でExitExitAppを終了コードを指定して実行した場合、そのコードは無視される。
OnExitサブルーチン内で再度コードを指定してExitAppを実行すれば、終了コードつきで終了できる。

A_ExitReason変数で一番最近OnExitサブルーチンが実行されたときの終了理由を参照できる。
一度もOnExitサブルーチンが実行されていないときは、A_ExitReasonは空になる。
A_ExitReasonがとりうる値は以下のどれか。

Logoff ユーザーがログオフしようとしている
Shutdown システムがシャットダウンしようとしている
Close WM_CLOSEやWM_QUITメッセージがメインウィンドウに送られた
Error スクリプトが常駐状態になっておらず、何らかのエラーが発生した
Menu メニューの標準項目の Exitを実行して終了しようとしたとき
Exit ExitExitAppコマンドで終了しようとした
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