スクリプト終了時に実行させたいサブルーチンを指定する
OnExit [, Label, FutureUse]
| 引数名 | 説明 |
|---|---|
| Label |
終了時に実行させたいサブルーチンのラベル名。 省略すると、終了時サブルーチンを解除する。 |
| FutureUse | 将来の拡張のために確保されている。今のところこの引数は無視される。 |
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に指定されたスクリプトが新たに起動されて、前のプロセスが終了されるとき |
ExitApp, RegisterCallback(), Shutdown, #Persistent, Threads, Gosub, Return, Menu
#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