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]] )
$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. |
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. |
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().
_WinAPI_RegCreateKey, _WinAPI_RegOpenKey
Consultez RegQueryMultipleValues dans la librairie MSDN.
#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')