UDF > WinAPIEx > Registry >


_WinAPI_RegNotifyChangeKeyValue

Avertit l'appelant sur les modifications apport�es aux attributs ou au contenu d'une cl� de registre sp�cifi�e

#include <WinAPIReg.au3>
_WinAPI_RegNotifyChangeKeyValue ( $hKey, $iFilter [, $bSubtree = False [, $bAsync = False [, $hEvent = 0]]] )

Param�tres

$hKey Handle de la cl� de registre ouverte. La cl� doit avoir �t� ouverte avec le droit d'acc�s KEY_NOTIFY.
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_USERS
$iFilter Indique les changements qui doivent �tre signal�s. Ce param�tre peut prendre une ou plusieurs des valeurs suivantes:
$REG_NOTIFY_CHANGE_NAME
$REG_NOTIFY_CHANGE_ATTRIBUTES
$REG_NOTIFY_CHANGE_LAST_SET
$REG_NOTIFY_CHANGE_SECURITY
$bSubtree [optionnel] Indique si le rapport change dans les sous-cl�s de la cl� sp�cifi�e, les valeurs possibles sont:
    True - La fonction signale les changements dans la cl� sp�cifi�e et toutes ses sous-cl�s.
    False - La fonction ne signale les changements que dans la cl� sp�cifi�e (par d�faut).
$bAsync [optionnel] Indique si la fonction retourne imm�diatement, les valeurs possibles sont:
    True - La fonction retourne imm�diatement et signale les modifications en signalant l'�v�nement sp�cifi�.
    False - La fonction ne retourne pas jusqu'� ce qu'une modification ait eu lieu (par d�faut).
$hEvent [optionnel] Handle de l'�v�nement. Si le param�tre $fAsync est True, la fonction retourne imm�diatement et les modifications sont signal�es en signalant cet �v�nement, sinon ce param�tre est ignor� (par d�faut).

Valeur de retour

Succ�s: Retourne 1.
�chec: Retourne 0 et d�finit @error <> 0, @extended peut contenir le code d'erreur du syst�me.

Remarque

Si la cl� sp�cifi�e est ferm�e, l'�v�nement est signal�. Cela signifie que l'application ne doit pas d�pendre du fait que la cl� est ouverte en retournant d'une op�ration d'attente sur l'�v�nement.

En relation

_WinAPI_RegCreateKey, _WinAPI_RegOpenKey

Voir aussi

Consultez RegNotifyChangeKeyValue dans la librairie MSDN.

Exemple

#include <APIRegConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIError.au3>
#include <WinAPIHObj.au3>
#include <WinAPIProc.au3>
#include <WinAPIReg.au3>

Opt('TrayAutoPause', 0)

Local $hKey = _WinAPI_RegOpenKey($HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Run', $KEY_NOTIFY)
If @error Then
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), @extended, _WinAPI_GetErrorMessage(@extended))
    Exit
EndIf
Local $hEvent = _WinAPI_CreateEvent()
If Not _WinAPI_RegNotifyChangeKeyValue($hKey, $REG_NOTIFY_CHANGE_LAST_SET, 0, 1, $hEvent) Then
    Exit
EndIf

Local $bStopLoop = False
Do
    If Not _WinAPI_WaitForSingleObject($hEvent, 0) Then
        Run(@AutoItExe & '/AutoIt3ExecuteLine "MsgBox(4096, ''Registry'', ''La base de registre a �t� modifi�e.'' & @CRLF & @CRLF & ''HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run'', 5)"')
        $bStopLoop = Not _WinAPI_RegNotifyChangeKeyValue($hKey, $REG_NOTIFY_CHANGE_LAST_SET, 0, 1, $hEvent)
    EndIf
    Sleep(100)
Until $bStopLoop

_WinAPI_CloseHandle($hEvent)
_WinAPI_RegCloseKey($hKey)