본문 바로가기

AUTOHOTKEY/레퍼런스

OnExit 스크립트 종료시에 실행시키고 싶은 써브루틴을 지정한다

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(으)로 지정된 스크립트가 새롭게 기동되고, 전의 프로세스가 종료될 때

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