Het Systeem van de invoer
De invoer System.Threading
De invoer System.Runtime.InteropServices
De invoer Microsoft.Win32
Openbare Klasse RegistryNotification
'egl1044
'Aannemer
Openbare Sub Nieuw ()
Sub van het eind
_
Openbare Enum RegNotifyFilter
REG_NOTIFY_CHANGE_NAME = brengt 1 'de bezoeker op de hoogte als een subkey wordt toegevoegd of geschrapt.
REG_NOTIFY_CHANGE_LAST_SET = brengen 4 'de bezoeker van veranderingen in een waarde van de sleutel op de hoogte. Dit kan het toevoegen van of het schrappen van een waarde of het veranderen van een bestaande waarde omvatten.
Eind Enum
Openbare Enum RegType
HKEY_LOCAL_MACHINE = &H80000002
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_USERS = &H80000003
Eind Enum
'Uitgevoerd niet in dit voorbeeld.
' _
'Privé Structuur REG_NOTIFY_INFORMATION
' Schemerige NextEntryOffset als Geheel
' Schemerige Actie als Geheel
' Schemerige RegNameLength als Geheel
' Schemerige RegName als IntPtr
De 'structuur van het eind
_
Privé Gedeelde Functie CeFindCloseRegChange (ByVal hChangeHandle als IntPtr) als Geheel
De Functie van het eind
_
Privé Gedeelde Functie CeFindFirstRegChange (hKey ByVal als IntPtr, ByVal bWatchSubtree als Geheel, ByVal dwNotifyFilter als RegNotifyFilter) als IntPtr
De Functie van het eind
_
Privé Gedeelde Functie CeFindNextRegChange (ByVal hChangeHandle als IntPtr) als Geheel
De Functie van het eind
_
Privé Gedeelde Functie RegOpenKeyEx (hKey ByVal als RegType, lpSubKey ByVal als Koord, ulOptions ByVal als Geheel, ByVal samDesired als Geheel, ByRef phkResult als IntPtr) als Geheel
De Functie van het eind
_
Privé Gedeelde Functie RegCloseKey (hKey ByVal als IntPtr) als Geheel
De Functie van het eind
_
Privé Gedeelde Functie WaitForSingleObject (handvat ByVal als Mej. IntPtr, ByVal als Geheel) als Geheel
De Functie van het eind
Privé hKey als IntPtr = IntPtr.Zero '/registratiehandvat
Privé hChangeHandle als IntPtr = IntPtr.Zero '/het handvat van het registratiebericht
Privé NotifyThread als Draad = niets
Privé bCancel zoals Van Boole = Vals
Openbare SubStartRegistryWatcher ()
'Horloge voor berichten op een afzonderlijke draad.
bCancel = Vals
NotifyThread = Nieuwe Draad (AddressOf RegistryNotificationThread)
NotifyThread.IsBackground = Waar
NotifyThread.Start ()
Sub van het eind
Openbare SubStopRegistryWatcher ()
'Annuleer berichten op de afzonderlijke draad.
bCancel = Waar
CeFindCloseRegChange (hChangeHandle)
Sub van het eind
' <>
Privé SubRegistryNotificationThread ()
'De veranderingsberichten van de looppas op nieuwe draad.
RegisterRegistryChange (RegType.HKEY_LOCAL_MACHINE, „fabrikan Software \“, 0)
Sub van het eind
Privé SubRegisterRegistryChange (ByVal rootKey als RegType, ByVal keyName als Koord, watchSubTree ByVal als Geheel)
'Ontdekt registratieberichten.
Als RegOpenKeyEx (rootKey, keyName, 0, 0, hKey) <> 0 toen
MsgBox („ontbroken RegOpenKeyEx. “)
Terugkeer
Eind als
'TODO: /de filtermontages van de Verandering hier
hChangeHandle = CeFindFirstRegChange (hKey, watchSubTree, RegNotifyFilter.REG_NOTIFY_CHANGE_LAST_SET)
Als hChangeHandle.ToInt32 = -1 toen
MsgBox („ontbroken CeFindFirstRegChange“)
RegCloseKey (hKey)
Terugkeer
Eind als
Doe terwijl bCancel <> Waar
WaitForSingleObject (hChangeHandle, Timeout.Infinite)
MsgBox („Ontdekte Verandering! “)
CeFindNextRegChange (hChangeHandle)
Thread.Sleep (0)
Lijn
'TODO: /
CeFindCloseRegChange (hChangeHandle)
RegCloseKey (hKey)
Sub van het eind
Openbare SubDebugCreateRegistryEntry ()
'Cre�ërt de gespecificeerde sleutel in de registratie voor het zuiveren.
Schemerige rk als RegistryKey = Registry.LocalMachine.OpenSubKey („Software“, Waar)
rk.CreateSubKey („fabrikan“)
rk. Sluit ()
Beëindig Sub
Openbare SubDebugChangeRegistryValue ()
'Simuleer een verandering in de registratie voor het zuiveren.
Verduister rk als RegistryKey = Registry.LocalMachine.OpenSubKey („fabrikan“, Ware Software \)
rk.SetValue („fabrikans“, TimeOfDay.Second.ToString, RegistryValueKind.String)
rk. Sluit ()
Beëindig Sub
Beëindig Klasse
|