la fonction RegEnumKeyEx me retourne toujours l'erreur 87(param=E8tres
incorrect), je n'ai pas du tout saisir :p
Public Const HKEY_CLASSES_ROOT =3D &H80000000
Public Const REG_SZ =3D 1
Public Const REG_DWORD =3D 4
Public Const READ_CONTROL =3D &H20000
Public Const KEY_READ =3D &H20019
Public 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
Public Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As
Long) As Long
Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias
"RegEnumKeyExA" (ByVal hKey As Long, _
ByVal dwIndex As
Long, ByVal lpName As String, _
lpcbName As Long,
lpReserved As Long, _
ByVal lpClass As
String, lpcbClass As Long, _
lpftLastWriteTime
As Any) As Long
Public Sub Lister()
Dim hand As Long
Dim nom As String
Dim time As Variant
Dim tailleNom As Long
Dim unusedA As Long
Dim unusedB As Long
Dim ind As Long
MsgBox RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID", 0, READ_CONTROL,
hand)
MsgBox RegEnumKeyEx(hand, 0, nom, tailleNom, unusedA,
vbNullString, unusedB, time)
MsgBox nom & " =3D> " & tailleNom
MsgBox RegCloseKey(hand)
End Sub
On 4æ16æ¥, åå¾12:17, "neirda" mail.com> wrote:
Bonjour à tous,
la fonction RegEnumKeyEx me retourne toujours l'erreur 87(paramètres incorrect), je n'ai pas du tout saisir :p
Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias _ "RegEnumKeyExA" (ByVal hKey As Long, _ ByVal dwIndex As Long, ByVal lpName As String, _ lpcbName As Long, lpReserved As Long, _ ByVal lpClass As String, lpcbClass As Long, _ lpftLastWriteTime As Any) As Long <snip>   MsgBox RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID", 0, READ_CON TROL, hand)   MsgBox RegEnumKeyEx(hand, 0, nom, tailleNom, unusedA, vbNullString, unusedB, time)   MsgBox nom & " => " & tailleNom   MsgBox RegCloseKey(hand) End Sub
En bref: http://faq.vb.free.fr/index.php?questionY -> http://support.microsoft.c om/?kbid&7908
François Picalausa
On 4æ16æ¥, åå¾12:17, "neirda" <zaffran...@hot mail.com> wrote:
Bonjour à tous,
la fonction RegEnumKeyEx me retourne toujours l'erreur 87(paramètres
incorrect), je n'ai pas du tout saisir :p
Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias _
"RegEnumKeyExA" (ByVal hKey As Long, _
ByVal dwIndex As Long, ByVal lpName As String, _
lpcbName As Long, lpReserved As Long, _
ByVal lpClass As String, lpcbClass As Long, _
lpftLastWriteTime As Any) As Long
<snip>
  MsgBox RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID", 0, READ_CON TROL,
hand)
  MsgBox RegEnumKeyEx(hand, 0, nom, tailleNom, unusedA,
vbNullString, unusedB, time)
  MsgBox nom & " => " & tailleNom
  MsgBox RegCloseKey(hand)
End Sub
On 4æ16æ¥, åå¾12:17, "neirda" mail.com> wrote:
Bonjour à tous,
la fonction RegEnumKeyEx me retourne toujours l'erreur 87(paramètres incorrect), je n'ai pas du tout saisir :p
Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias _ "RegEnumKeyExA" (ByVal hKey As Long, _ ByVal dwIndex As Long, ByVal lpName As String, _ lpcbName As Long, lpReserved As Long, _ ByVal lpClass As String, lpcbClass As Long, _ lpftLastWriteTime As Any) As Long <snip>   MsgBox RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID", 0, READ_CON TROL, hand)   MsgBox RegEnumKeyEx(hand, 0, nom, tailleNom, unusedA, vbNullString, unusedB, time)   MsgBox nom & " => " & tailleNom   MsgBox RegCloseKey(hand) End Sub
Effectivement, il fallait lire String$(255, vbnullchar).
Merci du retour!
François
neirda
en effet c'est mieux :p
J'ai désormais un problème un peu différent, j'essaye de boucler pour lister toutes les sous clefs mais cela n'affiche que la première clef trouvé (en l'occurence "ACPI" à chaque tour...)
Dim hand, tailleNom As Long Dim nom As String Dim cnt As Integer
nom = String$(255, vbNullChar) tailleNom = BUFFER_SIZE + 1
r_err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Hardware", 0, KEY_ENUMERATE_SUB_KEYS, hand) If r_err = 0 Then While RegEnumKeyEx(hand, cnt, nom, tailleNom, ByVal 0&, vbNullString, ByVal 0&, ByVal 0&) <> ERROR_NO_MORE_ITEMS MsgBox " " + Left$(nom, BUFFER_SIZE) cnt = cnt + 1 nom = String$(255, vbNullChar) Wend Else MsgBox "Erreur ouverture de la clef du registre: " & r_err End If
en effet c'est mieux :p
J'ai désormais un problème un peu différent, j'essaye de boucler pour
lister toutes les sous clefs mais cela n'affiche que la première clef
trouvé (en l'occurence "ACPI" à chaque tour...)
J'ai désormais un problème un peu différent, j'essaye de boucler pour lister toutes les sous clefs mais cela n'affiche que la première clef trouvé (en l'occurence "ACPI" à chaque tour...)
'Ouverture de la clef iErr = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID{1900415A-2AEB-4870- A70A-26181505F065}LocalServer32", 0, KEY_ALL_ACCESS, hKey)
If iErr = 0 Then 'Récupération du path du mgwmapp référencé... iErr = RegEnumValue(hKey, 0, sName, lNameSize, 0, ByVal 0&, sData, lDataSize) If iErr = 0 Then MsgBox Left$(sData, lDataSize - 13) Else MsgBox "Erreur lecture d'une valeur de la base de registre: " & iErr End If Else MsgBox "Erreur ouverture de la clef du registre: " & iErr End If
LA TOUT VA BIEN
Dim hKey, lNameSize, lDataSize As Long Dim sName, sData, SPATH As String Dim iCpt, iErr As Integer
'Ouverture de la clef iErr = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID{1900415A-2AEB-4870- A70A-26181505F065}LocalServer32", 0, KEY_ALL_ACCESS, hKey)
If iErr = 0 Then 'Récupération du path du mgwmapp référencé... iErr = RegEnumValue(hKey, 0, sName, lNameSize, 0, ByVal 0&, sData, lDataSize) If iErr = 0 Then msgbox Left$(sData, lDataSize - 13) Else MsgBox "Erreur lecture d'une valeur de la base de registre: " & iErr End If Else MsgBox "Erreur ouverture de la clef du registre: " & iErr End If
EN RAJOUTANT SPATH DANS LA DECLARATION, et même sans l'utiliser par la suite, la fonction RegEnumValue me retourne une suite de vbnullchar...
Je ne comprends pas pourquoi...
Petite précision needed ;)
J'essayes désormais de récupérer le contenu d'une valeur.
Cela fonctionne mais si dans le bloc de déclaration des variables je
déclare une nouvelle variable, ca change le résultat.
L'exemple sera plus parlant:
Dim hKey, lNameSize, lDataSize As Long
Dim sName, sData As String
Dim iCpt, iErr As Integer
'Ouverture de la clef
iErr = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID{1900415A-2AEB-4870-
A70A-26181505F065}LocalServer32", 0, KEY_ALL_ACCESS, hKey)
If iErr = 0 Then
'Récupération du path du mgwmapp référencé...
iErr = RegEnumValue(hKey, 0, sName, lNameSize, 0, ByVal 0&,
sData, lDataSize)
If iErr = 0 Then
MsgBox Left$(sData, lDataSize - 13)
Else
MsgBox "Erreur lecture d'une valeur de la base de
registre: " & iErr
End If
Else
MsgBox "Erreur ouverture de la clef du registre: " & iErr
End If
LA TOUT VA BIEN
Dim hKey, lNameSize, lDataSize As Long
Dim sName, sData, SPATH As String
Dim iCpt, iErr As Integer
'Ouverture de la clef
iErr = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID{1900415A-2AEB-4870-
A70A-26181505F065}LocalServer32", 0, KEY_ALL_ACCESS, hKey)
If iErr = 0 Then
'Récupération du path du mgwmapp référencé...
iErr = RegEnumValue(hKey, 0, sName, lNameSize, 0, ByVal 0&,
sData, lDataSize)
If iErr = 0 Then
msgbox Left$(sData, lDataSize - 13)
Else
MsgBox "Erreur lecture d'une valeur de la base de
registre: " & iErr
End If
Else
MsgBox "Erreur ouverture de la clef du registre: " & iErr
End If
EN RAJOUTANT SPATH DANS LA DECLARATION, et même sans l'utiliser par la
suite, la fonction RegEnumValue me retourne une suite de vbnullchar...
'Ouverture de la clef iErr = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID{1900415A-2AEB-4870- A70A-26181505F065}LocalServer32", 0, KEY_ALL_ACCESS, hKey)
If iErr = 0 Then 'Récupération du path du mgwmapp référencé... iErr = RegEnumValue(hKey, 0, sName, lNameSize, 0, ByVal 0&, sData, lDataSize) If iErr = 0 Then MsgBox Left$(sData, lDataSize - 13) Else MsgBox "Erreur lecture d'une valeur de la base de registre: " & iErr End If Else MsgBox "Erreur ouverture de la clef du registre: " & iErr End If
LA TOUT VA BIEN
Dim hKey, lNameSize, lDataSize As Long Dim sName, sData, SPATH As String Dim iCpt, iErr As Integer
'Ouverture de la clef iErr = RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID{1900415A-2AEB-4870- A70A-26181505F065}LocalServer32", 0, KEY_ALL_ACCESS, hKey)
If iErr = 0 Then 'Récupération du path du mgwmapp référencé... iErr = RegEnumValue(hKey, 0, sName, lNameSize, 0, ByVal 0&, sData, lDataSize) If iErr = 0 Then msgbox Left$(sData, lDataSize - 13) Else MsgBox "Erreur lecture d'une valeur de la base de registre: " & iErr End If Else MsgBox "Erreur ouverture de la clef du registre: " & iErr End If
EN RAJOUTANT SPATH DANS LA DECLARATION, et même sans l'utiliser par la suite, la fonction RegEnumValue me retourne une suite de vbnullchar...