ra91400
Messages postés10Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention31 janvier 2005
-
3 janv. 2005 à 14:01
ra91400
Messages postés10Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention31 janvier 2005
-
4 janv. 2005 à 09:26
Bonjour,
Je fais un projet VB où j'écris des informations que je dois stocker dans le registre windows. J'ai donc sur mon interface un bouton SAVE et un autre DELETE. Je ne vois pas du tout quel code mettre dedans, si quelq'un pourrait m'aider!
Merci d'avance,
Mon code est pour le moment :
-----------------------------------
Option Explicit
Private Declare Function RegCloseKey Lib "advapi32" (ByVal Hkey As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32" 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, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Long, ByRef lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal Hkey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal Hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal Hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal Hkey As Long, ByVal lpValueName As String) As Long
'- Constantes des API de base de registres...
'---------------------------------------------------------------
' Types de données de base de registres...
Const REG_SZ = 1 ' chaîne Unicode terminée par nul
Const REG_EXPAND_SZ = 2 ' chaîne Unicode terminée par nul
Const REG_DWORD = 4 ' nombre 32-bit
' Valeurs de type de création...
Const REG_OPTION_NON_VOLATILE = 0 ' clé préservée lorsque le système
' est redémarré
'---------------------------------------------------------------
'- Type Security_Attributes de la base de registres...
'---------------------------------------------------------------
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type
Public Function SaveKey(SubKeyName As String, SubKeyValue As String) As Boolean
Dim rc As Long ' Code renvoyé
Dim Hkey As Long ' Descripteur de
' clé de la base de registres
Dim hDepth As Long '
'------------------------------------------------------------
'- Crée/Ouvre une clé de base de registres...
'------------------------------------------------------------
rc = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\Addonmail\PMC", _
0, REG_SZ, _
REG_OPTION_NON_VOLATILE, KEY_WRITE, 0, _
Hkey, hDepth) ' Crée/Ouvre //KeyRoot//KeyName
If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' Gestion des erreurs...
'------------------------------------------------------------
'- Crée/Modifie une valeur de clé...
'------------------------------------------------------------ If (SubKeyValue "") Then SubKeyValue " "
If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' Gestion des erreurs
'------------------------------------------------------------
'- Ferme une clé de base de registres...
'------------------------------------------------------------
rc = RegCloseKey(Hkey) ' Ferme la clé
SaveKey = True ' Renvoie succès
Exit Function ' Quitte
CreateKeyError:
SaveKey = False
rc = RegCloseKey(Hkey) ' Tentative de fermeture de clés
End Function
Public Function GetKeyValue(SubKeyRef As String) As String
Dim i As Long ' Compteur de boucle
Dim rc As Long ' Code renvoyé
Dim Hkey As Long ' Descripteur de clé de base de registres ouverte
Dim hDepth As Long '
Dim sKeyVal As String
Dim lKeyValType As Long ' Type de données d'une clé de base de registres
Dim tmpVal As String ' Stockage temporaire d'une valeur de clé de base de registres
Dim KeyValSize As Long ' Taille d'une variable clé de base de registres
' Ouvre RegOpenKeyEx sous KeyRoot
'------------------------------------------------------------
rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_READ, Hkey) ' Ouvre la clé de base de registres
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Gestion des erreurs
tmpVal = String$(1024, 0) ' Alloue de l'espace pour la variable
KeyValSize = 1024 ' Définit la taille de la variable
'------------------------------------------------------------
' Récupère une valeur de clé de base de registres...
'------------------------------------------------------------
rc = RegQueryValueEx(Hkey, SubKeyRef, 0, _
lKeyValType, tmpVal, KeyValSize) ' Lit/Créée une valeur de clé
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Gestion des erreurs
tmpVal = Left$(tmpVal, InStr(tmpVal, Chr(0)) - 1)
'------------------------------------------------------------
' Détermine le type de valeur de clé pour la conversion...
'------------------------------------------------------------
Select Case lKeyValType ' Recherche des types de données...
Case REG_SZ, REG_EXPAND_SZ ' Type de données String de clé de base de registres
sKeyVal = tmpVal ' Copie la valeur String
Case REG_DWORD ' Type de données Double Word de clé de base de registres
For i = Len(tmpVal) To 1 Step -1 ' Convertit chaque bit
sKeyVal = sKeyVal + Hex(Asc(Mid(tmpVal, i, 1))) ' Génère la valeur car. par car.
Next
sKeyVal = Format$("&h" + sKeyVal) ' Convertit le type Double Word en String
End Select
GetKeyValue = sKeyVal ' Valeur renvoyée
rc = RegCloseKey(Hkey) ' Ferme la clé de bases de registres
Exit Function ' Quitte
GetKeyError: ' Nettoyage après apparition d'une erreur...
GetKeyValue = vbNullString ' Affecte une chaîne vide à la valeur renvoyée
rc = RegCloseKey(Hkey) ' Ferme la clé de base de registres
End Function
Public Function DeleteKey(ByVal Hkey As Long, ByVal strKey As String)
Dim r As Long
r = RegDeleteKey(Hkey, strKey)
End Function
Public Function DeleteValue(ByVal Hkey As Long, ByVal strPath As String, ByVal strValue As String)
Dim keyhand As Long
r = RegOpenKey(Hkey, strPath, keyhand)
r = RegDeleteValue(keyhand, strValue)
r = RegCloseKey(keyhand)
End Function
N.B Je n'ai pas encore fait ces fonctions cmdsave_click et cmddelete_click Aidez moi svp !