Pour lancer un programme au demarrage de windows avec la base de registre pour toutes versions de windows
Source / Exemple :
'il suffit de coller le code suivant et de faire appel à une case à cocher
'qui appelle RegRunAjoute si on veut que l'appli se lance au démarrage de windows
'et qui appelle RegRunOte pour le cas contraire.
Const HKEY_CURRENT_USER= &H80000001
Const CLE_RUN = "Software\Microsoft\Windows\CurrentVersion\Run"
Const REG_SZ = 1 ' Unicode nul terminated string
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Sub RegRunAjoute() 'ajoute la clé ds le registre pour demarrage auto
Dim Ret as Long
Dim Result as Long
Dim ValCle As String
Dim Parametres as string 'Parametres optionnels de la ligne de commande (ne pas oublier l'espace au début)
Parametres=""
ValCle = App.Path & "\" & App.EXEName & ".exe" & Parametres
'Create a new key
Result = RegCreateKey(HKEY_CURRENT_USER, CLE_RUN, Ret)
If Result <> 0 Then
MsgBox "Error while creating the Key!!"
Exit Sub
End If
'Set the key's value
Result = RegSetValueEx(Ret, App.Title, 0, REG_SZ, ByVal ValCle, Len(ValCle))
If Result <> 0 Then
MsgBox "Error while creating the Key!!"
End If
'close the key
RegCloseKey Ret
End Sub
Private Sub RegRunOte() 'enleve le demarrage auto du registre
Dim Result as Long
Dim Ret as Long
'Check if the specified key exists
RegOpenKey HKEY_CURRENT_USER, CLE_RUN, Ret
If Ret = 0 Then Exit Sub 'la clé n'existe pas
'Delete the key's value
Result = RegDeleteValue(Ret, App.Title)
If Result <> 0 Then
MsgBox "Error while deleting the Key!!"
End If
'close the handle
RegCloseKey Ret
End Sub
'on peut utiliser d'autres api pour un reglage + fin mais on perd en compatibilité avec win 95
'voir l'excellent site http://www.mentalis.org/agnet/apiguide.shtml pour voir les alternatives et explications
Conclusion :
code simplifié, pas testé avec NT car necessite des autorisations (je crois)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.