Sistema delle importazioni
Importazioni System.Threading
Importazioni System.Runtime.InteropServices
Importazioni Microsoft.Win32
Codice categoria pubblico RegistryNotification
'egl1044
'Costruttore
Nuovi secondari pubblici ()
Sommergibile dell'estremità
_
Enum pubblico RegNotifyFilter
REG_NOTIFY_CHANGE_NAME = 1 'informano il visitatore se un subkey si aggiunge o cancellato.
REG_NOTIFY_CHANGE_LAST_SET = 4 'informano il visitatore dei cambiamenti ad un valore della chiave. Ciò può includere l'aggiunta o la cancellazione del valore o il cambiamento del valore attuale.
Estremità Enum
Enum pubblico RegType
HKEY_LOCAL_MACHINE = &H80000002
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_USERS = &H80000003
Estremità Enum
'D'applicazione in questo esempio.
' _
'Struttura riservata REG_NOTIFY_INFORMATION
' NextEntryOffset fioco come numero intero
' Azione fioca come numero intero
' RegNameLength fioco come numero intero
' RegName fioco come IntPtr
'Struttura dell'estremità
_
Funzione comune riservata CeFindCloseRegChange (hChangeHandle di ByVal come IntPtr) come numero intero
Funzione di conclusione
_
Funzione comune riservata CeFindFirstRegChange (hKey di ByVal come bWatchSubtree di ByVal, di IntPtr come dwNotifyFilter di ByVal, di numero intero come RegNotifyFilter) come IntPtr
Funzione di conclusione
_
Funzione comune riservata CeFindNextRegChange (hChangeHandle di ByVal come IntPtr) come numero intero
Funzione di conclusione
_
Funzione comune riservata RegOpenKeyEx (hKey di ByVal come il lpSubKey di ByVal, di RegType come la stringa, i ulOptions come numero intero, ByVal di ByVal samDesired come numero intero, phkResult di ByRef come IntPtr) come numero intero
Funzione di conclusione
_
Funzione comune riservata RegCloseKey (hKey di ByVal come IntPtr) come numero intero
Funzione di conclusione
_
Funzione comune riservata WaitForSingleObject (maniglia di ByVal come spettrografia di massa di ByVal, di IntPtr come numero intero) come numero intero
Funzione di conclusione
hKey riservato come IntPtr = IntPtr.Zero '/maniglia di registrazione
hChangeHandle riservato come IntPtr = IntPtr.Zero '/maniglia notifica di registrazione
NotifyThread riservato come filetto = niente
bCancel riservato come booleano = falso
StartRegistryWatcher secondario pubblico ()
'Vigilanza per le notifiche su un filetto separato.
bCancel = falso
NotifyThread = nuovo filetto (AddressOf RegistryNotificationThread)
NotifyThread.IsBackground = allineano
NotifyThread.Start ()
Sommergibile dell'estremità
StopRegistryWatcher secondario pubblico ()
'Annullare le notifiche sul filetto separato.
il bCancel = allinea
CeFindCloseRegChange (hChangeHandle)
Sommergibile dell'estremità
' <>
RegistryNotificationThread secondario riservato ()
'Fare funzionare le notifiche del cambiamento sul nuovo filetto.
RegisterRegistryChange (RegType.HKEY_LOCAL_MACHINE, “software \ fabrikan„, 0)
Sommergibile dell'estremità
RegisterRegistryChange secondario riservato (rootKey di ByVal come keyName di ByVal, di RegType come watchSubTree di ByVal, della stringa come numero intero)
'Rileva le notifiche di registrazione.
Se RegOpenKeyEx (rootKey, keyName, 0, 0, hKey) <> 0 allora
MsgBox (“RegOpenKeyEx failed.")
Ritorno
Concluder se
'TODO: /regolazioni filtro dal cambiamento qui
hChangeHandle = CeFindFirstRegChange (hKey, watchSubTree, RegNotifyFilter.REG_NOTIFY_CHANGE_LAST_SET)
Se hChangeHandle.ToInt32 = -1 allora
MsgBox (“CeFindFirstRegChange è venuto a mancare„)
RegCloseKey (hKey)
Ritorno
Concluder se
Fare mentre bCancel <> allineare
WaitForSingleObject (hChangeHandle, Timeout.Infinite)
MsgBox (“cambiamento rilevato! ")
CeFindNextRegChange (hChangeHandle)
Thread.Sleep (0)
Ciclo
'TODO: /
CeFindCloseRegChange (hChangeHandle)
RegCloseKey (hKey)
Sommergibile dell'estremità
DebugCreateRegistryEntry secondario pubblico ()
'Genera la chiave specificata nella registrazione per ricerca degli errori.
Rk fioco come RegistryKey = Registry.LocalMachine.OpenSubKey (“software„, allineare)
rk.CreateSubKey (“fabrikan„)
rk. Chiuder ()
Concludere il sommergibile
DebugChangeRegistryValue secondario pubblico ()
'Simulare un cambiamento nella registrazione per ricerca degli errori.
Oscurare il rk come RegistryKey = Registry.LocalMachine.OpenSubKey (“software \ fabrikan„, allineare)
rk.SetValue (“fabrikans„, TimeOfDay.Second.ToString, RegistryValueKind.String)
rk. Chiuder ()
Concludere il sommergibile
Concludere il codice categoria
|