Questione : rilevare il Ce delle finestre del cambiamento di registrazione

Ciao, devo rilevare quando i valori di registrazione cambiano su Windows CE using vb.net. class= del

Risposta : rilevare il Ce delle finestre del cambiamento di registrazione

Ho avuto certo tempo di giocare con le funzioni.  Ho usato l'emulatore e funziona benissimo su quello;)… Esempio anche situato su 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:
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
Altre soluzioni  
 
programming4us programming4us