Skip to content

cStartUp 开机启动管理组件

概述

cStartUp 是 VBMAN 框架提供的开机启动管理组件,用于管理 Windows 系统注册表中的开机启动项。支持添加、删除、查询启动项,可传递启动参数。

特性

  • 切换模式 - 自动判断添加或删除启动项
  • 支持参数 - 可为启动程序传递命令行参数
  • 双模式路径 - 支持传入 App 对象或字符串路径
  • 全局访问 - 通过 VBMAN.StartUp 快速访问

快速开始

检查当前开机启动状态

vb
Private Sub Form_Load()
    ' 设置菜单勾选状态
    MenuStartUp.Checked = VBMAN.StartUp.Has("my-app-name")
End Sub

切换开机启动

vb
Private Sub MenuStartUp_Click()
    ' Toggle 会自动判断:不存在则添加,存在则删除
    If VBMAN.StartUp.Toggle("my-app-name", App) = True Then
        ' 切换成功,更新菜单状态
        MenuStartUp.Checked = VBMAN.StartUp.Has("my-app-name")
        VBMAN.Toast.Show IIf(MenuStartUp.Checked, "设置开机启动成功", "取消开机启动成功")
    Else
        ' 切换失败,显示错误
        VBMAN.Toast.Show "开机设置失败:" & VBMAN.StartUp.LastError
    End If
End Sub

注册表位置

组件操作的是 Windows 注册表以下位置:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run

注:HKCU 表示当前用户,设置的开机启动仅对当前用户生效。

完整示例

vb
'===============================================
' 开机启动管理完整示例
'===============================================

Private Sub Form_Load()
    ' 初始化菜单状态
    UpdateStartUpMenu()
End Sub

' 点击开机启动菜单
Private Sub MenuStartUp_Click()
    ToggleStartUp
End Sub

' 切换开机启动状态
Private Sub ToggleStartUp()
    Dim AppName As String
    AppName = "my-application"
    
    ' 方式1:传入 App 对象(推荐)
    If VBMAN.StartUp.Toggle(AppName, App) Then
        UpdateStartUpMenu()
        ShowToggleResult
    Else
        MsgBox "设置失败:" & VBMAN.StartUp.LastError, vbCritical
    End If
End Sub

' 更新菜单勾选状态
Private Sub UpdateStartUpMenu()
    MenuStartUp.Checked = VBMAN.StartUp.Has("my-application")
End Sub

' 显示切换结果
Private Sub ShowToggleResult()
    If MenuStartUp.Checked Then
        VBMAN.Toast.Show "已添加到开机启动"
    Else
        VBMAN.Toast.Show "已取消开机启动"
    End If
End Sub

带启动参数

vb
' 切换开机启动,并传递启动参数
Private Sub MenuStartUp_Click()
    ' 参数:启动后最小化到托盘
    If VBMAN.StartUp.Toggle("my-app", App, "--minimized", "--autostart") Then
        Debug.Print "开机启动设置成功"
    End If
End Sub

启动后可通过 Command$ 读取参数:

vb
Private Sub Form_Load()
    ' 检查是否是开机自动启动
    If InStr(Command$, "--autostart") > 0 Then
        ' 最小化到托盘
        Me.WindowState = vbMinimized
        Me.Hide
    End If
End Sub

VB6及其LOGO版权为微软公司所有