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 ExitExitAppコマンドで終了しようとした
Reload スクリプトがReloadコマンドやメニューアイテムで再読み込みさせられるとき
Single #SingleInstanceに指定されたスクリプトが新たに起動されて、前のプロセスが終了されるとき

Related

ExitApp, RegisterCallback(), Shutdown, #Persistent, Threads, 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