- 版本 v1.1.15.01
- 指南和概述
- 常见问题(FAQ)
- 按字母排序的命令和函数索引
- AutoHotkey 脚本展示
- 变更和新功能
- 基本用法和语法
- 迁移到 AutoHotkey 1.1(AutoHotkey_L)
- 环境管理
- 本机代码互操作
- 文件、目录和磁盘管理
- Drive
- DriveGet
- DriveSpaceFree
- FileAppend
- FileCopy
- FileCopyDir
- FileCreateDir
- FileCreateShortcut
- FileDelete
- FileEncoding [AHK_L 42+]
- FileGetAttrib
- FileGetShortcut
- FileGetSize
- FileGetTime
- FileGetVersion
- FileInstall
- FileMove
- FileMoveDir
- FileOpen [AHK_L 42+]
- FileReadLine
- FileRead
- FileRecycle
- FileRecycleEmpty
- FileRemoveDir
- FileSelectFile
- FileSelectFolder
- FileSetAttrib
- FileSetTime
- IfExist / IfNotExist
- IniDelete
- IniRead
- IniWrite
- Loop(文件和文件夹)
- Loop(读取文件内容)
- SetWorkingDir
- SplitPath
- 流程控制
- 内置函数
- GUI、MsgBox、InputBox 及其他对话框
- 鼠标和键盘
- 鼠标和键盘
- #InstallKeybdHook
- #InstallMouseHook
- #KeyHistory
- BlockInput
- Click [v1.0.43+]
- ControlClick
- ControlSend / ControlSendRaw
- CoordMode
- GetKeyState
- KeyHistory
- KeyWait
- Input
- MouseClick
- MouseClickDrag
- MouseGetPos
- MouseMove
- Send / SendRaw / SendInput / SendPlay / SendEvent: 发送按键和点击
- SendLevel [v1.1.06+]
- SendMode [v1.0.43+]
- SetDefaultMouseSpeed
- SetKeyDelay
- SetMouseDelay
- SetCapsLockState/SetNumLockState/SetScrollLockState
- SetStoreCapslockMode
- 数学相关
- 屏幕管理
- 杂项命令
- 进程管理
- 注册表管理
- 声音命令
- 字符串管理
- 窗口管理
- 控件
- 窗口组
- #WinActivateForce
- DetectHiddenText
- DetectHiddenWindows
- SetTitleMatchMode
- SetWinDelay
- StatusBarGetText
- StatusBarWait
- WinActivate
- WinActivateBottom
- WinClose
- WinGet
- WinGetActiveStats
- WinGetActiveTitle
- WinGetClass
- WinGetPos
- WinGetText
- WinGetTitle
- WinHide
- WinKill
- WinMaximize
- WinMinimize
- WinMinimizeAll / WinMinimizeAllUndo
- WinMove
- WinRestore
- WinSet
- WinSetTitle
- WinShow
- WinWait
- WinWaitActive / WinWaitNotActive
- WinWaitClose
- #指令
OnExit
指定在脚本退出时自动运行的子程序。
OnExit [, Label]
参数
重要提示: 由于调用这个指定的子程序而没有终止脚本, 所以想要终止脚本时必须在这个子程序中使用 ExitApp 命令. 可选的 (如同下面的示例部分那样), OnExit 子程序可以显示一个 MsgBox 来提示用户确认, 只有当用户按下 YES 时才会执行 ExitApp 退出脚本.
备注
当脚本由于任意原因退出时会调用 OnExit 子程序 (除非脚本是被像结束任务这样杀掉). 每当 "https://www.wenjiangs.com/doc/AutoHotkey-Reload">Reload 命令要求终止前一个实例时, 也会调用这个子程序.
脚本可以通过 OnMessage(0x11, "WM_QUERYENDSESSION")
检测并且可以终止系统关闭或注销操作。
OnExit 线程 不遵循 "https://www.wenjiangs.com/doc/AutoHotkey-Threads">线程 中断, 包括 热键, 自定义菜单项 以及 定时子程序. 然而, 如果用户在托盘菜单或主菜单中选择 Exit, 或者通过 Reload 或 #SingleInstance 命令要求终止脚本时, 它将会终止执行 (同时脚本将退出). 因此, OnExit 子程序应该设计成快速结束, 除非用户明白自己正在做什么.
如果 OnExit 线程 遇到诸如运行时错误的失败状况, 则脚本会终止. 这样避免了有问题的 OnExit 子程序使得脚本无法终止的情况出现.
如果 OnExit 子程序是由指定退出码的 Exit 或 ExitApp 命令运行的, 则会忽略退出码. OnExit 子程序中可以使用 ExitApp 指定新的退出码.
每当脚本退出尝试调用 OnExit 子程序时, 这时会使用设置 (例如 SendMode) 的默认值开始. 这些默认值可以在 自动执行段 改变.
内置变量 A_ExitReason 为空,除非 OnExit 子程序正在运行或者在之前的退出中至少调用过一次。如果不是空的, 则它为下列单词的其中一个:
logoff | 用户正在注销. |
Shutdown | 正在关闭或重启系统, 例如使用 Shutdown 命令. |
Close | 脚本接收到 WM_CLOSE 或 WM_QUIT 消息, 出现致命错误或者正被以其他方式关闭. 尽管这些情况都是很少见的, 然而 WM_CLOSE 可能是由脚本主窗口使用 WinClose 命令发出的. 要避免这种情况,请使用 Send, !{F4} 关闭主窗口。 |
错误 | 在没有热键且不是 持续运行的 脚本中发生了运行时错误. 运行时错误的一个例子是 Run/RunWait 命令无法启动指定的程序或打开指定的文档. |
Menu | 用户在主窗口的菜单或标准托盘菜单中选择了退出. |
Exit | 使用了 Exit 或 ExitApp 命令 (包括 自定义菜单项). |
Reload | 正通过 Reload 命令或菜单项重载脚本. |
Single | 由于 #SingleInstance 的结果, 脚本正被它自身的新实例代替. |
相关
OnMessage(), RegisterCallback(), OnClipboardChange, ExitApp, Shutdown, "https://www.wenjiangs.com/doc/AutoHotkey-Threads">线程, Gosub, Return, Menu
示例
"No" 时让脚本持续运行. OnExit, ExitSub return ExitSub: if A_ExitReason not in Logoff,Shutdown ; 在这行语句中, 注意不要在逗号周围含有空格. { MsgBox, 4, , Are you sure you want to exit? IfMsgBox, No return } ExitApp ; 含 OnExit 脚本终止自身的唯一方法是在 OnExit 子程序中使用 ExitApp.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论