UDF > WinAPIEx > Registry >


_WinAPI_RegQueryMultipleValues

Obtient le type et les donn�es pour une liste de noms de valeur associ�s � une cl� de registre ouverte

#include <WinAPIReg.au3>
_WinAPI_RegQueryMultipleValues ( $hKey, ByRef $aValent, ByRef $pBuffer [, $iStart = 0 [, $iEnd = -1]] )

Param�tres

$hKey Handle de la cl� de registre ouverte. La cl� doit avoir �t� ouverte avec le droit d'acc�s KEY_QUERY_VALUE.
Ce handle est retourn� par la fonction _WinAPI_RegCreateKey() ou _WinAPI_RegOpenKey(). Il peut �galement �tre l'une des cl�s pr�d�finies suivantes:
$HKEY_CLASSES_ROOT
$HKEY_CURRENT_CONFIG
$HKEY_CURRENT_USER
$HKEY_LOCAL_MACHINE
$HKEY_PERFORMANCE_DATA
$HKEY_USERS
$aValent Le tableau 2D ([valuename1, *, *, *], ..., [valuenameN, *, *, *]) qui contient les noms de valeur � rechercher.
En entr�e, les �l�ments 1, 2, et 3 du tableau ne sont pas utilis�s, mais les dimensions du tableau doivent �tre [n][4], sinon la fonction �choue.
En outre, cette fonction �choue si l'une des valeurs sp�cifi�es n'existe pas dans la cl� de registre sp�cifi�e.
$pBuffer Un pointeur sur une m�moire tampon qui contient les donn�es de registre. En r�gle g�n�rale, vous ne devriez pas utiliser ce tampon directement (voir remarques).
$iStart [optionnel] L'index du tableau o� commencer la requ�te.
$iEnd [optionnel] L'index du tableau o� arr�ter la requ�te.

Valeur de retour

Succ�s: Retourne le nombre d'octets copi�s dans la m�moire tampon. Le tableau $aValent contiendra les donn�es suivantes:
[n][0] - Le nom de la valeur (reste inchang�).
[n][1] - La taille des donn�es, en octets.
[n][2] - Le pointeur sur les donn�es du tampon point� par le param�tre $pBuffer.
[n][3] - Le type de donn�es ($REG_*).
�chec: D�finit @error <> 0, @extended peut contenir le code d'erreur du syst�me.

Remarques

Pour �viter la s�rialisation excessive, les donn�es retourn�es par la fonction ne peuvent pas d�passer un m�gaoctet.

Lorsque des donn�es de registre retourn�es ne sont plus n�cessaires, vous devez lib�rer la m�moire allou�e point�e par le param�tre $pBuffer en appelant la fonction _WinAPI_FreeMemory().

En relation

_WinAPI_RegCreateKey, _WinAPI_RegOpenKey

Voir aussi

Consultez RegQueryMultipleValues dans la librairie MSDN.

Exemple

#include <APIRegConstants.au3>
#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIError.au3>
#include <WinAPIMem.au3>
#include <WinAPIReg.au3>

Local $aValent[19][4]

; Notez que si au moins l'un des noms de valeur suivants ne se trouve pas dans la cl� de registre sp�cifi�e, la fonction �choue!

; HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

$aValent[0][0] = 'AppData'
$aValent[1][0] = 'Cache'
$aValent[2][0] = 'Cookies'
$aValent[3][0] = 'Desktop'
$aValent[4][0] = 'Favorites'
$aValent[5][0] = 'History'
$aValent[6][0] = 'Local AppData'
$aValent[7][0] = 'My Music'
$aValent[8][0] = 'My Pictures'
$aValent[9][0] = 'My Video'
$aValent[10][0] = 'NetHood'
$aValent[11][0] = 'Personal'
$aValent[12][0] = 'PrintHood'
$aValent[13][0] = 'Programs'
$aValent[14][0] = 'Recent'
$aValent[15][0] = 'SendTo'
$aValent[16][0] = 'Start Menu'
$aValent[17][0] = 'Startup'
$aValent[18][0] = 'Templates'

_ArrayDisplay($aValent, '_WinAPI_RegQueryMultipleValues')

Local $hKey = _WinAPI_RegOpenKey($HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders', $KEY_QUERY_VALUE)
If @error Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), @extended, _WinAPI_GetErrorMessage(@extended))
    Exit
EndIf

Local $pBuffer
_WinAPI_RegQueryMultipleValues($hKey, $aValent, $pBuffer)
If @error Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), @extended, _WinAPI_GetErrorMessage(@extended))
    Exit
EndIf

_WinAPI_RegCloseKey($hKey)

_ArrayDisplay($aValent, '_WinAPI_RegQueryMultipleValues')

For $i = 0 To UBound($aValent) - 1
    $aValent[$i][2] = DllStructGetData(DllStructCreate('wchar['& $aValent[$i][1] & ']', $aValent[$i][2]), 1)
Next

_WinAPI_FreeMemory($pBuffer)

_ArrayDisplay($aValent, '_WinAPI_RegQueryMultipleValues')