首先我是个新手,我看论坛里普遍在使用计划任务做自启动,我不是很清楚不同实现方式其中的区别,可能方便管理员方式启动?
一开始我也是复制大佬的代码直接用,后来发现升级WIN11后脚本开机时无限闪退重启
仔细看才发现大佬的脚本里有个检测任务栏图标消失的逻辑,不知道为什么可能出现图标丢失的情况就会这样。
后来自己写了这个,感觉也挺简单直观,就一直用下来了。
;-----------------------------------------------------------------------------------------------------------
;下面创建一个简单的GUI用于演示过程
Gui, Add, Radio, w1 ; 多创建一个看不见的控件,处理默认焦点虚线问题,可以忽略
Gui, Add, Checkbox, x100 y100 w200 h18 g自启动按钮 vCheckbox1, 开机自启 ;[vCheckbox1]表示这个按钮的名字叫Checkbox1;[g自启动按钮]表示按下按钮后执行标签“自启动按钮”
Gui, Show ;展示上面创建的控件窗口
gosub 更新自启按钮状态 ;展示完窗口后去执行一下标签[更新自启按钮状态],判断一下当前自其状态并更新Gui中的勾选状态
return
;-----------------------------------------------------------------------------------------------------------
;检测和触发按钮的函数
更新自启按钮状态:
if (判断自启状态() )
{
GuiControl, , Checkbox1, 1 ; 打勾Checkbox1这个复选框
MsgBox, 目前检测到启用自启动,所以更新窗口中控件为勾选状态
Gui, Show
}
return
自启动按钮: ;按钮点击后的自启动触发动作
if 判断自启状态() ;根据"判断自启状态"返回值决定动作
{
if 取消自启() ;根据返回值是否为true判断
{
GuiControl, , Checkbox1, 0 ; 取消勾选复选框
MsgBox, 已取消本脚本开机自启动
}
else
{
MsgBox, 262160, Error, 取消开机自启动任务失败!,8
}
}
else
{
if 设置自启()
{
GuiControl, , Checkbox1, 1 ; 打勾复选框
MsgBox, 已设置了本脚本开机自启动
}
else
{
MsgBox, 262160, Error, 添加开机自启动任务失败!,8
}
}
return
;-----------------------------------------------------------------------------------------------------------
; 启用自启相关的函数;通过注册表实现
设置自启() {
RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Run, 测试自启脚本, %A_ScriptFullPath%
return true
}
; 禁用自启的函数
取消自启() {
RegDelete, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Run, 测试自启脚本
return true
}
; 检测自启是否启用的函数
判断自启状态() {
RegRead, OutputVar, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Run, 测试自启脚本
return (OutputVar == A_ScriptFullPath)
}