Lire dans une base de registre

Résolu
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010 - 28 juin 2005 à 19:45
cs_mti Messages postés 51 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 29 mars 2008 - 10 juil. 2005 à 18:55
J'ai besoin de lire la résolution de mon écran dans la base de registre. Pour cela j'utilise les fonctions suivantes :

Public Const HKEY_CURRENT_USER = &H80000001
Const REG_SZ = 1


Public Declare Function RegQueryValueEx 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
Public Declare Function RegOpenKey Lib "advapi32.dll" _
Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" ( _
ByVal hKey As Long) As Long

Call RegOpenKey(HKEY_CURRENT_USER, "Display\Settings", RegCle)
Call RegQueryValueEx(RegCle, "Resolution", 0, REG_SZ, RegValeur, Len(RegValeur))
Call RegCloseKey(RegCle)
On Error Resume Next
RegValeur = Left$(RegValeur, Len(RTrim$(RegValeur)) - 1)
RegValeur = CStr(RegValeur)

Problème ma valeur est toujours = zéro

pouvez-vous m'aider ? Merci par avance

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 juin 2005 à 20:07
Tout dépend de la longueur de RegValeur : si tu lui donne une chaîne vide, il ne va rien te renvoyer !

Utilise plutôt ceci :



Dim RegValeurAs string

Let RegValeur = Space(255)

Call RegQueryValueEx(hKey, sKeyName, 0&, 0&, ByVal RegValeur, len(RegValeur))

RegValeur = Left$(RegValeur, Len(RTrim$(RegValeur)) - 1)


DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
3
cs_mti Messages postés 51 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 29 mars 2008
28 juin 2005 à 21:38
Je suis un peu débutant et vu que vou avez l'air de bien vous y connître, je peut vous demander quelle(s) fonction(s) faut-il utiliser pour lire quelque chose dan la base de registre


La programmation, c'est dur!!!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 juin 2005 à 22:09
Mais non c'est pas dur, il faut juste comprendre la logique ;)



Pour lire une clé dans le registre, il faut tout d'abord l'ouvrir en
utilisant la fonction RegOpenKey comme tu la fais pour obtenir un
handle qui te permettra de manipuler la clé.



Ensuite, il faut utiliser la fonction RegQueryValueEx pour lire la
valeur de la clé. Il faut lui passer un buffer (il s'agit d'une
variable de type string qui contient des espaces, suffisament d'espace
pour stocker la valeur lue).



Enfin, lorsque tu as lu la valeur, il te suffit de fermer la clé avec la fonction RegCloseKey.


Tu avais donc juste avec ton code, mais je pense que ton buffer était trop petit.


DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 juin 2005 à 22:51
dernier param de RegQueryValueEx est l'adresse d'un long, en entrée doit contenir taille de ton buffer et en sortie contient le nbr d'octets insérés dans ton buffer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mti Messages postés 51 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 29 mars 2008
10 juil. 2005 à 18:55
Merci DarK Sidious, mais ces détails sont un peu techniques: est-ce que quelqun pourrais me donner un exemple pour:
lire le contenu de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
et afficher le nom de chaque chaine dans le tableau de contrôles "txtChaines"
et afficher leur valeur dans le tableau de contrôles "txtValeurs"
supprimer par ex la chaine "aoldial"
modifier la valeur "C:\PROGRA~1\TECHCI~1\AOLSAV\AOLAgent.exe"
en
"D:\PROGRA~1\TECHCI~1\AOLSAV\AOLAgent.exe" (pour la chaine "aolsav")
créer une nouvelle chaine
"KAVPersonal50"
avec la valeur
""C:\Program Files\Kaspersky Lab\Kaspersky Anti-Virus Personal\kav.exe" /minimize"
modifier le nom de la chaine
"STDSB"
en
"STDSA"
renommer la clé
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
en
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run-
supprimer la clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce
????????????????????????????????????????????????????????????????????

Merci pour votre réponse, je sais que c'est beaucoup demander mais je suis un peu perdu avec ces histoires de RegQueryValueEx a qui il faut leur "passer?!?" des buffers,
enfin voilà je suis nul quoi bon non il ne faut pas se sous-estimer donc je dis: je ne sais pas encore comment faire.
Enfin bref: A L'AIDE !!!
Bon voilà merci d'avance pour une réponse de quelqun qui s'ennuie devant son ordi et qui n'a rien d'autre à faire que de taper du code pour quelqun qu'il ne connait pas!!!!


La programmation (en vb6), c'est dur!!!
0
Rejoignez-nous