Fråga : avkänn ce för registreringsändringsfönster

Hi jag behöver att avkänna när registreringen värderar ändring på Windows CE using vb.net. " klar "

Svar : avkänn ce för registreringsändringsfönster

Jag hade någon tid att leka med fungerar.  Jag använde emulatorn, och den fungerar fint på det;),…, Exempel som lokaliseras också på MSDN @ CeFindFirstRegChange ()

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:
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
Andra lösningar  
 
programming4us programming4us