使用新的脚本实例替换当前正在运行的.
Reload
此函数可用于需要频繁改变的脚本. 通过给此函数设置热键, 您可以在编辑器中保存修改后轻松地重启脚本.
默认情况下, 脚本也可以通过它的托盘图标或主窗口来重新加载.
传递给原始脚本的命令行参数不会被传递给新的实例. 要传递这些参数, 请不要使用 Reload. 相反地, 把 Run 配合 A_AhkPath 和 A_ScriptFullPath 使用(如果会以编译后的形式运行脚本, 还包括 A_IsCompiled). 此外, 使用 /restart
作为首个参数(即在可执行文件名后), 这样告诉程序要使用和 Reload 相同的动作. 另请参阅: 命令行开关和语法.
当脚本重启时, 会从它原来的工作目录启动(当它首次启动时生效的那个). 换句话说, SetWorkingDir 不会改变新实例的初始工作目录.
如果脚本无法重载(可能由于语法错误), 那么原来的实例会继续运行. 因此, reload 函数后应跟着在重载失败时您想执行的动作(例如使用 return 来退出当前子程序). 要在原来的实例中检测到失败, 请参照此例:
Reload Sleep 1000 ; 如果成功, 则 reload 会在 Sleep 期间关闭这个实例, 所以下面这行语句永远不会执行. Result := MsgBox("The script could not be reloaded. Would you like to open it for editing?",, 4) if Result = "Yes" Edit return
脚本以前的实例是通过与 #SingleInstance 相同的机制来识别的, 有着同样的限制.
如果脚本允许多个实例, Reload 可能无法识别正确的实例. 最简单的方法是 Run 一个新的实例, 然后退出. 例如:
if A_IsCompiled Run Format('"{1}" /force', A_ScriptFullPath) else Run Format('"{1}" /force "{2}"', A_AhkPath, A_ScriptFullPath) ExitApp