Start Application With Windows II

Category: Application Features

Date: 02-16-2022

Return to Index


 
hanks to Neil Crosby.
 
To make the program run at startup, open this registry key:
 
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
 
Create a subkey named after the application with value giving the complete path to the executable. Note that the executable must exist or it 't start (obviously).
 
The WillRunAtStartup function opens the registry and looks for this key. It returns True if the key is present.
 
Subroutine SetRunAtStartup modifies the registry to make the application either run at startup or not. It begins by using RegCreateKeyEx to open the key HKEY_CURRENT_USER\...\Run. This API function opens the key, creating it if it 't already exist.
 
Next SetRunAtStartup creates or deletes the necessary key as appropriate.
 
 
' Return True if the program is set to run at startup.
Private Function WillRunAtStartup(ByVal app_name As String) _
    As Boolean
Dim hKey As Long
Dim value_type As Long
 
    ' See if the key exists.
    If RegOpenKeyEx(HKEY_CURRENT_USER, _
        "Software\Microsoft\Windows\CurrentVersion\Run", _
        0, KEY_READ, hKey) = ERROR_SUCCESS _
    Then
        ' Look for the subkey named after the application.
        WillRunAtStartup = _
            (RegQueryValueEx(hKey, app_name, _
                ByVal 0&, value_type, ByVal 0&, ByVal 0&) = _
                    _
            ERROR_SUCCESS)
 
        ' Close the registry key handle.
        RegCloseKey hKey
    Else
        ' Can't find the key.
        WillRunAtStartup = False
    End If
End Function
' Clear or set the key that makes the program run at
' startup.
Private Sub chkRun_Click()
    If m_IgnoreEvents Then Exit Sub
 
    SetRunAtStartup App.EXEName, App.Path, _
        (chkRun.Value = vbChecked)
End Sub
Private Sub Form_Load()
    ' See if the program is set to run at startup.
    m_IgnoreEvents = True
    If WillRunAtStartup(App.EXEName) Then
        chkRun.Value = vbChecked
    Else
        chkRun.Value = vbUnchecked
    End If
    m_IgnoreEvents = False
End Sub
 
' Determine whether the program will run at startup.
' To run at startup, there should be a key in:
' HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
' named after the program's executable with value
' giving its path.
Private Sub SetRunAtStartup(ByVal app_name As StringByVal _
    app_path As StringOptional ByVal run_at_startup As _
    Boolean = True)
Dim hKey As Long
Dim key_value As String
Dim status As Long
 
    On Error GoTo SetStartupError
 
    ' Open the key, creating it if it doesn't exist.
    If RegCreateKeyEx(HKEY_CURRENT_USER, _
        "Software\Microsoft\Windows\CurrentVersion\Run", _
        ByVal 0&, ByVal 0&, ByVal 0&, _
        KEY_WRITE, ByVal 0&, hKey, _
        ByVal 0&) <> ERROR_SUCCESS _
    Then
        MsgBox "Error " & Err.Number & " opening key" & _
            vbCrLf & Err.Description
        Exit Sub
    End If
 
    ' See if we should run at startup.
    If run_at_startup Then
        ' Create the key.
        key_value = app_path & "\" & app_name & ".exe" & _
            vbNullChar
        status = RegSetValueEx(hKey, App.EXEName, 0, _
            REG_SZ, _
            ByVal key_value, Len(key_value))
 
        If status <> ERROR_SUCCESS Then
            MsgBox "Error " & Err.Number & " setting key" & _
                _
                vbCrLf & Err.Description
        End If
    Else
        ' Delete the value.
        RegDeleteValue hKey, app_name
    End If
 
    ' Close the key.
    RegCloseKey hKey
    Exit Sub
 
SetStartupError:
    MsgBox Err.Number & " " & Err.Description
    Exit Sub
End Sub
 
'gbs_01210
'Date: 05-11-2013


created by gbSnippets
http://www.garybeene.com/sw/gbsnippets.htm