Importsystem
Importer System.Threading
Importer System.Runtime.InteropServices
Importer Microsoft.Win32
Allmänhet klassificerar RegistryNotification
'egl1044
'Constructor
Offentliga undernya ()
Avsluta suben
_,
Offentliga Enum RegNotifyFilter
REG_NOTIFY_CHANGE_NAME = 1 'meddelar calleren, om en subkey tillfogas eller tas bort.
REG_NOTIFY_CHANGE_LAST_SET = 4 'meddelar calleren av ändringar till en värdera av det nyckel-. Detta kan inkludera att tillfoga, eller ta bort en värdera eller ändra ett existerande värdera.
Avsluta Enum
Offentliga Enum RegType
HKEY_LOCAL_MACHINE = &H80000002
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_USERS = &H80000003
Avsluta Enum
'Inte genomfört i detta exempel.
' _,
'Privat strukturera REG_NOTIFY_INFORMATION
' Dunkla NextEntryOffset som heltal
' Dunkel handling som heltal
' Dunkla RegNameLength som heltal
' Dunkla RegName som IntPtr
'Avsluta strukturerar
_,
Delade privata fungerar CeFindCloseRegChange (ByVal hChangeHandle som IntPtr) som heltal
Avsluta fungerar
_,
Delade privata fungerar CeFindFirstRegChange (den ByVal hKeyen som den IntPtr, ByVal bWatchSubtreen som heltal-, ByVal dwNotifyFilter som RegNotifyFilter) som IntPtr
Avsluta fungerar
_,
Delade privata fungerar CeFindNextRegChange (ByVal hChangeHandle som IntPtr) som heltal
Avsluta fungerar
_,
Delade privata fungerar RegOpenKeyEx (den ByVal hKeyen som RegType, den ByVal lpSubKeyen som stränger, ByVal ulOptions som heltal, ByVal samDesired som heltal-, ByRef phkResult som IntPtr), som heltal
Avsluta fungerar
_,
Delade privata fungerar RegCloseKey (den ByVal hKeyen som IntPtr) som heltal
Avsluta fungerar
_,
Delade privata fungerar WaitForSingleObject (det ByVal handtaget som den IntPtr, ByVal msen som heltal) som heltal
Avsluta fungerar
Privat hKey som IntPtr = IntPtr.Zero '/registreringshandtag
Privat hChangeHandle som IntPtr = IntPtr.Zero '/registreringsmeddelandehandtag
Privata NotifyThread som tråden = ingenting
Privat bCancel som Boolean = falsk
Offentliga underStartRegistryWatcher ()
'Klocka för meddelanden på en separat tråd.
bCancel = falskt
NotifyThread = ny tråd (AddressOf RegistryNotificationThread)
NotifyThread.IsBackground = True
NotifyThread.Start ()
Avsluta suben
Offentliga underStopRegistryWatcher ()
'Avbryt meddelanden på den separata tråden.
bCancel = True
CeFindCloseRegChange (hChangeHandle)
Avsluta suben
', <>
Privata underRegistryNotificationThread ()
'Kör ändringsmeddelanden på den nya tråden.
RegisterRegistryChange (RegType.HKEY_LOCAL_MACHINE, ”programvara \ fabrikan”, 0)
Avsluta suben
Privata underRegisterRegistryChange (den ByVal rootKeyen som RegType, ByVal keyName som stränger, ByVal watchSubTreen som heltal)
'Avkänner registreringsmeddelanden.
Om RegOpenKeyEx (rootKey, keyName, 0, 0, hKey) <> 0 därefter
MsgBox (”RegOpenKeyEx missade. ”)
Retur
Avsluta om
'TODO: /ändring filtrerar inställningar här
hChangeHandle = CeFindFirstRegChange (hKeyen, watchSubTreen, RegNotifyFilter.REG_NOTIFY_CHANGE_LAST_SET)
Om hChangeHandle.ToInt32 = -1 därefter
MsgBox (”CeFindFirstRegChange missade”),
RegCloseKey (hKey)
Retur
Avsluta om
Gör riktig stund <> bCancel
WaitForSingleObject (hChangeHandle, Timeout.Infinite)
MsgBox (”ändring avkände! ”)
CeFindNextRegChange (hChangeHandle)
Thread.Sleep (0)
Kretsa
'TODO: /
CeFindCloseRegChange (hChangeHandle)
RegCloseKey (hKey)
Avsluta suben
Offentliga underDebugCreateRegistryEntry ()
'Skapar det specificerade nyckel- i registreringen för feltestning.
Dunkel rk som RegistryKey = Registry.LocalMachine.OpenSubKey (”programvara” som, är riktiga)
rk.CreateSubKey (”fabrikan”)
rk. Nära ()
Avsluta suben
Offentliga underDebugChangeRegistryValue ()
'Simulera en ändring i registreringen för feltestning.
Dunkel rk som RegistryKey = Registry.LocalMachine.OpenSubKey (”programvara \ fabrikan”, riktiga)
rk.SetValue (”fabrikans”, TimeOfDay.Second.ToString, RegistryValueKind.String)
rk. Nära ()
Avsluta suben
Avsluta klassificerar
|