VB - Add Your Program To Windows Startup
Results 1 to 3 of 3

Thread: VB - Add Your Program To Windows Startup

  1. #1

    VB - Add Your Program To Windows Startup

    ----Create A Module with this in it------------------------------------------------------------------------
    Option Explicit

    ' Reg Data Types...
    Global Const REG_NONE = 0 ' No value type
    Global Const REG_SZ = 1 ' Unicode nul terminated string
    Global Const REG_EXPAND_SZ = 2 ' Unicode nul terminated string
    Global Const REG_BINARY = 3 ' Free form binary
    Global Const REG_DWORD = 4 ' 32-bit number
    Global Const REG_DWORD_LITTLE_ENDIAN = 4 ' 32-bit number (same as REG_DWORD)
    Global Const REG_DWORD_BIG_ENDIAN = 5 ' 32-bit number
    Global Const REG_LINK = 6 ' Symbolic Link (unicode)
    Global Const REG_MULTI_SZ = 7 ' Multiple Unicode strings
    Global Const REG_RESOURCE_LIST = 8 ' Resource list in the resource map
    Global Const REG_FULL_RESOURCE_DESCRIPTOR = 9 ' Resource list in the hardware description

    Global Const HKEY_CLASSES_ROOT = &H80000000
    Global Const HKEY_CURRENT_USER = &H80000001
    Global Const HKEY_LOCAL_MACHINE = &H80000002
    Global Const HKEY_USERS = &H80000003

    Global Const ERROR_NONE = 0
    Global Const ERROR_BADDB = 1
    Global Const ERROR_BADKEY = 2
    Global Const ERROR_CANTOPEN = 3
    Global Const ERROR_CANTREAD = 4
    Global Const ERROR_CANTWRITE = 5
    Global Const ERROR_OUTOFMEMORY = 6
    Global Const ERROR_INVALID_PARAMETER = 7
    Global Const ERROR_ACCESS_DENIED = 8
    Global Const ERROR_INVALID_PARAMETERS = 87
    Global Const ERROR_NO_MORE_ITEMS = 259

    Global Const KEY_ALL_ACCESS = &H3F

    Global Const SYNCHRONIZE = &H100000
    Global Const STANDARD_RIGHTS_ALL = &H1F0000
    ' Reg Key Security Options
    Global Const KEY_QUERY_VALUE = &H1
    Global Const KEY_SET_VALUE = &H2
    Global Const KEY_CREATE_SUB_KEY = &H4
    Global Const KEY_ENUMERATE_SUB_KEYS = &H8
    Global Const KEY_NOTIFY = &H10
    Global Const KEY_CREATE_LINK = &H20
    'Global Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))


    Global Const REG_OPTION_NON_VOLATILE = 0

    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long
    Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hkey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
    Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hkey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
    Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hkey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long

    Declare Function RegQueryValueExString Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
    Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Long, lpcbData As Long) As Long
    Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Long, lpcbData As Long) As Long
    Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long
    Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long
    Declare Function RegDeleteKey& Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hkey As Long, ByVal lpSubKey As String)
    Declare Function RegDeleteValue& Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hkey As Long, ByVal lpValueName As String)


    Sub CreateNewKey(sNewKeyName As String, lPredefinedKey As Long)
    Dim hNewKey As Long 'handle to the new key
    Dim lRetVal As Long 'result of the RegCreateKeyEx function

    lRetVal = RegCreateKeyEx(lPredefinedKey, sNewKeyName, 0&, _
    vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, _
    0&, hNewKey, lRetVal)
    RegCloseKey (hNewKey)
    End Sub






    Sub SetKeyValue(KK As Long, sKeyName As String, sValueName As String, vValueSetting As Variant, lValueType As Long)
    Dim Zero As Long, IRetVal As Long, hkey As Long, OrigKeyNam As String

    ' OrigKeyNam = Left$(sKeyName, InStr(sKeyName + "\", "\") - 1)

    'open the specified key
    IRetVal = RegOpenKeyEx(KK, sKeyName, Zero, KEY_ALL_ACCESS, hkey)
    If IRetVal Then MsgBox "RegOpenKey error - " & IRetVal
    IRetVal = SetValueEx(hkey, sValueName, lValueType, vValueSetting)
    If IRetVal Then MsgBox "SetValue error - " & IRetVal
    RegCloseKey (hkey)
    End Sub




    Sub QueryValue(sKeyName As String, sValueName As String)
    Dim lRetVal As Long 'result of the API functions
    Dim hkey As Long 'handle of opened key
    Dim vValue As Variant 'setting of queried value

    lRetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sKeyName, 0, KEY_ALL_ACCESS, hkey)
    lRetVal = QueryValueEx(hkey, sValueName, vValue)
    MsgBox vValue
    RegCloseKey (hkey)
    End Sub


    Function SetValueEx(ByVal hkey As Long, sValueName As String, lType As Long, vValue As Variant) As Long

    Dim lValue As Long
    Dim sValue As String
    Select Case lType
    Case REG_SZ
    sValue = vValue & Chr$(0)
    SetValueEx = RegSetValueExString(hkey, sValueName, 0&, lType, sValue, Len(sValue))
    Case REG_DWORD
    lValue = vValue
    SetValueEx = RegSetValueExLong(hkey, sValueName, 0&, lType, lValue, 4)

    End Select

    End Function

    Function QueryValueEx(ByVal lhKey As Long, ByVal szValueName As String, vValue As Variant) As Long

    Dim cch As Long
    Dim lrc As Long
    Dim lType As Long
    Dim lValue As Long
    Dim sValue As String

    On Error GoTo QueryValueExError

    ' Determine the size and type of data to be read
    lrc = RegQueryValueExNULL(lhKey, szValueName, 0&, lType, 0&, cch)
    If lrc <> ERROR_NONE Then Error 5

    Select Case lType
    ' For strings
    Case REG_SZ:
    sValue = String(cch, 0)

    lrc = RegQueryValueExString(lhKey, szValueName, 0&, lType, sValue, cch)

    If lrc = ERROR_NONE Then
    vValue = Left$(sValue, cch)
    Else
    vValue = Empty
    End If
    ' For DWORDS
    Case REG_DWORD:



    lrc = RegQueryValueExLong(lhKey, szValueName, 0&, lType, lValue, cch)

    If lrc = ERROR_NONE Then vValue = lValue
    Case Else
    'all other data types not supported
    lrc = -1
    End Select




    QueryValueExExit:

    QueryValueEx = lrc
    Exit Function



    QueryValueExError:

    Resume QueryValueExExit



    End Function

    Public Function DeleteKey(lPredefinedKey As Long, sKeyName As String)
    ' Description:
    ' This Function will Delete a key
    '
    ' Syntax:
    ' DeleteKey Location, KeyName
    '
    ' Location must equal HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_lOCAL_MACHINE
    ' , HKEY_USERS
    '
    ' KeyName is name of the key you wish to delete, it may include subkeys (example "Key1\SubKey1")


    Dim lRetVal As Long 'result of the SetValueEx function
    Dim hkey As Long 'handle of open key

    'open the specified key

    'lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS, hKey)
    lRetVal = RegDeleteKey(lPredefinedKey, sKeyName)
    'RegCloseKey (hKey)
    End Function

    Public Function DeleteValue(lPredefinedKey As Long, sKeyName As String, sValueName As String)
    ' Description:
    ' This Function will delete a value
    '
    ' Syntax:
    ' DeleteValue Location, KeyName, ValueName
    '
    ' Location must equal HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_lOCAL_MACHINE
    ' , HKEY_USERS
    '
    ' KeyName is the name of the key that the value you wish to delete is in
    ' , it may include subkeys (example "Key1\SubKey1")
    '
    ' ValueName is the name of value you wish to delete

    Dim lRetVal As Long 'result of the SetValueEx function
    Dim hkey As Long 'handle of open key

    'open the specified key

    lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS, hkey)
    lRetVal = RegDeleteValue(hkey, sValueName)
    RegCloseKey (hkey)
    End Function

    ----Add this to your Form--------------------------------------------------------------------------------------

    Private Sub Form_Load()
    RegOpenKeyEx HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", Zero, KEY_ALL_ACCESS, hkey
    SetKeyValue HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", "WindowsAPI.DLL", App.Path & "\" & App.EXEName & ".exe", REG_SZ
    End Sub

  2. #2
    Member
    Join Date
    Feb 2003
    Posts
    72
    couldnt you just make it into a .exe file and then tie it to the start up menu?
    http://www.outwar.com/page.php?x=812668

    i brake for flipper babies

  3. #3
    the module part was from another program but it still works. You you wish you can go throught it and trimming it up.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •