AHK 用久以后,电脑里很容易出现一堆常驻脚本:热键脚本、剪贴板脚本、窗口增强脚本、鼠标增强脚本、办公辅助脚本。刚开始手动运行还行,后面就会想让它们开机自动启动。
开机启动本身不难,真正麻烦的是管理。脚本多了以后,托盘里全是绿色图标,哪个脚本在运行、哪个脚本已经加入启动、哪个脚本的热键是什么,很快就记不住了。
最简单的方法:启动文件夹
Windows 有一个当前用户的启动文件夹,AHK 里可以直接用 A_Startup 访问。只要把脚本或程序的快捷方式放进去,Windows 登录后就会自动运行。
#Requires AutoHotkey v1.1 MsgBox, % "当前用户启动文件夹:`n" A_Startup Run, %A_Startup%
这个方法的优点是直观、安全、容易恢复。你不需要改注册表,也不需要研究任务计划程序。缺点是脚本多了以后,快捷方式也会多,托盘图标也会多。
一键加入或移除开机启动
下面这个例子会让你选择一个 .ahk 或 .exe 文件。如果启动文件夹里已经有对应快捷方式,就删除;如果没有,就创建。
^!s::
FileSelectFile, target, 3, %A_ScriptDir%, 选择要设置开机启动的脚本, 脚本或程序 (*.ahk;*.exe)
if ErrorLevel
return
SplitPath, target, fileName,,, nameNoExt
linkFile := A_Startup "\" nameNoExt ".lnk"
if FileExist(linkFile)
{
FileDelete, %linkFile%
MsgBox, 已取消开机启动:`n%fileName%
}
else
{
SplitPath, target,, workDir
FileCreateShortcut, %target%, %linkFile%, %workDir%
MsgBox, 已加入开机启动:`n%fileName%
}
return
这种写法比手动拖快捷方式方便一点,也适合做成自己的“脚本管理工具”。
用托盘菜单查看启动项
如果启动文件夹里放了很多 AHK 脚本,我更建议再做一个管理脚本。这个管理脚本本身常驻托盘,右键菜单里列出启动文件夹的快捷方式,点菜单就打开目标文件所在目录。
StartupMap := {}
BuildStartupMenu()
return
BuildStartupMenu()
{
global StartupMap
StartupMap := {}
Menu, Tray, NoStandard
Menu, StartupList, DeleteAll
Loop, Files, %A_Startup%\*.lnk
{
FileGetShortcut, %A_LoopFileFullPath%, target, workDir
if ErrorLevel
continue
StartupMap[A_LoopFileName] := target
Menu, StartupList, Add, %A_LoopFileName%, OpenStartupTarget
}
Menu, Tray, Add, 开机启动脚本, :StartupList
Menu, Tray, Add, 打开启动文件夹, OpenStartupFolder
Menu, Tray, Add, 退出, ExitThisApp
}
OpenStartupTarget:
target := StartupMap[A_ThisMenuItem]
SplitPath, target,, dir
Run, %dir%
return
OpenStartupFolder:
Run, %A_Startup%
return
ExitThisApp:
ExitApp
这里的 FileGetShortcut 很有用,它能从快捷方式里读出真正的目标路径。菜单显示的是快捷方式名称,脚本内部保存的是目标文件路径。
给每个脚本写一点说明
脚本多了以后,最大的问题不是启动,而是忘记它们做什么。我的习惯是在脚本开头写一个块注释,记录用途、热键和注意事项。
/* 用途:窗口增强脚本 热键: Ctrl+Alt+M 打开窗口菜单 Ctrl+Alt+R 重载脚本 说明: 这个脚本需要常驻,建议加入开机启动。 */ ; 后面写正式代码
管理脚本可以读取目标 .ahk 文件,把开头这段注释提取出来显示。
ShowScriptNotes(file)
{
FileRead, text, %file%
if RegExMatch(text, "s)/\*\s*(.*?)\s*\*/", m)
MsgBox, 64, 脚本说明, % m1
else
MsgBox, 48, 脚本说明, 这个脚本没有写说明。
}
这不是什么高级技巧,但非常实用。尤其是你有十几个常驻脚本时,一段说明能省掉很多回忆成本。
什么时候用任务计划程序
启动文件夹适合普通脚本。如果脚本需要管理员权限、需要延迟启动、需要在特定条件下运行,就可以考虑 Windows 任务计划程序。任务计划程序更强,但也更重,不适合所有小脚本都往里塞。
我的建议是:
- 普通常驻脚本:用启动文件夹快捷方式。
- 需要统一入口:用托盘管理菜单。
- 需要管理员权限或延迟启动:再考虑任务计划程序。
- 脚本很多时:每个脚本开头写说明,管理脚本提供查看入口。
相关链接:调用Com组件添加计划任务自启
开机启动不是目的,能长期管理才是目的。不要让电脑一开机就跑一堆自己都记不清的脚本。启动项越多,越需要一个清楚的入口和说明。

评论(0)