Frage : Registeränderungs-Fenstercer ermitteln

Hallo, muss ich ermitteln, wann Registerwerte auf Windows CE using vb.net ändern.

Antwort : Registeränderungs-Fenstercer ermitteln

Ich hatte einige Zeit, mit den Funktionen zu spielen.  Ich benutzte den Nacheiferer und er adaequat ist auf dem;)… Beispiel auch gelegen auf 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:
6:
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:
Import-System
Importe System.Threading
Importe System.Runtime.InteropServices
Importe Microsoft.Win32

Allgemeine Kategorie RegistryNotification
    'egl1044

    'Erbauer
    Allgemeine Vorneue ()

    Enden-Unterseeboot

     _
    Allgemeines Enum RegNotifyFilter
        REG_NOTIFY_CHANGE_NAME = 1 'mitteilen den Anrufer, wenn ein subkey addiert oder gelöscht.
        REG_NOTIFY_CHANGE_LAST_SET = 4 'benachrichtigen den Anrufer über Änderungen an einem Wert des Schlüssels. Dieses kann das Addieren oder das Löschen eines Wertes oder das Ändern eines vorhandenen Wertes mit.einschließen.
    Ende Enum

    Allgemeines Enum RegType
        HKEY_LOCAL_MACHINE = &H80000002
        HKEY_CLASSES_ROOT = &H80000000
        HKEY_CURRENT_USER = &H80000001
        HKEY_USERS = &H80000003
    Ende Enum

    'Eingeführt nicht in diesem Beispiel.
    ' _
    'Private Struktur REG_NOTIFY_INFORMATION
    '    Schwaches NextEntryOffset als ganze Zahl
    '    Schwache Tätigkeit als ganze Zahl
    '    Schwaches RegNameLength als ganze Zahl
    '    Schwaches RegName als IntPtr
    'Enden-Struktur

     _
    Private geteilte Funktion CeFindCloseRegChange (ByVal hChangeHandle als IntPtr) als ganze Zahl
    Enden-Funktion

     _
    Private geteilte Funktion CeFindFirstRegChange (ByVal hKey als IntPtr, ByVal bWatchSubtree als ganze Zahl, ByVal dwNotifyFilter als RegNotifyFilter) als IntPtr
    Enden-Funktion

     _
    Private geteilte Funktion CeFindNextRegChange (ByVal hChangeHandle als IntPtr) als ganze Zahl
    Enden-Funktion

     _
    Private geteilte Funktion RegOpenKeyEx (ByVal hKey als RegType, ByVal lpSubKey, wie Schnur, ByVal ulOptions als ganze Zahl, ByVal als ganze Zahl samDesired, ByRef phkResult als IntPtr) als ganze Zahl
    Enden-Funktion

     _
    Private geteilte Funktion RegCloseKey (ByVal hKey als IntPtr) als ganze Zahl
    Enden-Funktion

     _
    Private geteilte Funktion WaitForSingleObject (ByVal Handgriff als IntPtr, ByVal Frau als ganze Zahl) als ganze Zahl
    Enden-Funktion

    Privates hKey wie IntPtr = IntPtr.Zero '/Registerhandgriff
    Privates hChangeHandle wie IntPtr = IntPtr.Zero '/Registermitteilungshandgriff
    Privates NotifyThread als Gewinde = nichts
    Privates bCancel, wie Boolesch = falsch

    Allgemeines VorStartRegistryWatcher ()
        'Uhr für Mitteilungen auf einem unterschiedlichen Gewinde.
        bCancel = falsch
        NotifyThread = neues Gewinde (AddressOf RegistryNotificationThread)
        NotifyThread.IsBackground = ausrichten en
        NotifyThread.Start ()
    Enden-Unterseeboot

    Allgemeines VorStopRegistryWatcher ()
        'Mitteilungen auf dem unterschiedlichen Gewinde annullieren.
        bCancel = ausrichten en
        CeFindCloseRegChange (hChangeHandle)
    Enden-Unterseeboot

    '  <>
    Privates VorRegistryNotificationThread ()
        'Änderungsmitteilungen auf neuem Gewinde laufen lassen.
        RegisterRegistryChange (RegType.HKEY_LOCAL_MACHINE, „Software \ fabrikan“, 0)
    Enden-Unterseeboot

    Privates VorRegisterRegistryChange (ByVal rootKey als RegType, ByVal keyName als Schnur, ByVal watchSubTree als ganze Zahl)
        'Ermittelt Registermitteilungen.
        Wenn RegOpenKeyEx (rootKey, keyName, 0, 0, hKey) <> 0 dann
            MsgBox („RegOpenKeyEx failed.")
            Rückkehr
        Beenden wenn
        'TODO: /Änderungsfiltereinstellungen hier
        hChangeHandle = CeFindFirstRegChange (hKey, watchSubTree, RegNotifyFilter.REG_NOTIFY_CHANGE_LAST_SET)
        Wenn hChangeHandle.ToInt32 = -1 dann
            MsgBox („CeFindFirstRegChange ausfiel“)
            RegCloseKey (hKey)
            Rückkehr
        Beenden wenn
        Tun während das zutreffende <> bCancel
            WaitForSingleObject (hChangeHandle, Timeout.Infinite)
            MsgBox („Änderung ermittelt! ")
            CeFindNextRegChange (hChangeHandle)
            Thread.Sleep (0)
        Schleife
        'TODO: /
        CeFindCloseRegChange (hChangeHandle)
        RegCloseKey (hKey)
    Enden-Unterseeboot

    Allgemeines VorDebugCreateRegistryEntry ()
        'Verursacht den angegebenen Schlüssel im Register für Entstörung.
        Schwaches rk als RegistryKey = Registry.LocalMachine.OpenSubKey („Software“, zutreffend)
        rk.CreateSubKey („fabrikan“)
        rk. Schließen ()
    Unterseeboot beenden

    Allgemeines VorDebugChangeRegistryValue ()
        'Eine Änderung im Register für Entstörung simulieren.
        Rk als RegistryKey = Registry.LocalMachine.OpenSubKey („Software \ fabrikan“, zutreffende) verdunkeln
        rk.SetValue („fabrikans“, TimeOfDay.Second.ToString, RegistryValueKind.String)
        rk. Schließen ()
    Unterseeboot beenden

Kategorie beenden
Weitere Lösungen  
 
programming4us programming4us