Vraag : ontdek de venstersCe van de registratieverandering

Hallo, moet ik ontdekken wanneer de registratiewaarden op Windows CE gebruikend vb.net veranderen.

Antwoord : ontdek de venstersCe van de registratieverandering

Ik had wat tijd om met de functies te spelen.  Ik gebruikte de mededinger en het werkt boete aan dat;)… Voorbeeld op MSDN @ CeFindFirstRegChange ook wordt gevestigd die ()

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
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
Andere oplossingen  
 
programming4us programming4us