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)