Pytanie : wykrywać archiwum zmiana okno ce

Cześć, I potrzebować kiedy archiwum wartość zmieniać na Windows CE using vb.net.

Odpowiedź : wykrywać archiwum zmiana okno ce

I miewać niektóre czas z the funkcja.  I używać the emulator i ono pracować świetnie na pracować;)… Przykład także lokalizować na 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:
Import System
Import System.Threading
Import System.Runtime.InteropServices
Import Microsoft.Win32

Społeczeństwo Klasowy RegistryNotification
    'egl1044

    'Konstruktor
    Jawny Okręt podwodny Nowy ()

    Końcówka Okręt podwodny

     _
    Jawny Enum RegNotifyFilter
        REG_NOTIFY_CHANGE_NAME = (1) 'Zawiadamiać the rozmówca jeżeli subkey dodawać lub kasować.
        REG_NOTIFY_CHANGE_LAST_SET = 4 'Zawiadamiać the rozmówca zmiana wartość the klucz. Wartość móc lub wartość lub istniejący wartość.
    Końcówka Enum

    Jawny Enum RegType
        HKEY_LOCAL_MACHINE = &H80000002
        HKEY_CLASSES_ROOT = &H80000000
        HKEY_CURRENT_USER = &H80000001
        HKEY_USERS = &H80000003
    Końcówka Enum

    'Uprawomocniać w ten przykład.
    ' _
    'Intymny Struktura REG_NOTIFY_INFORMATION
    '    Ciemnawy NextEntryOffset Jako Integer
    '    Ciemnawy Akcja Jako Integer
    '    Ciemnawy RegNameLength Jako Integer
    '    Ciemnawy RegName Jako IntPtr
    'Końcówka Struktura

     _
    Intymny Podzielony Funkcja CeFindCloseRegChange (ByVal hChangeHandle Jako IntPtr) Jako Integer
    Końcówka Funkcja

     _
    Intymny Podzielony Funkcja CeFindFirstRegChange (ByVal hKey Jako IntPtr, ByVal bWatchSubtree Jako Integer, ByVal dwNotifyFilter Jako RegNotifyFilter) Jako IntPtr
    Końcówka Funkcja

     _
    Intymny Podzielony Funkcja CeFindNextRegChange (ByVal hChangeHandle Jako IntPtr) Jako Integer
    Końcówka Funkcja

     _
    Intymny Podzielony Funkcja RegOpenKeyEx (ByVal hKey Jako RegType, ByVal lpSubKey Gdy Sznurek, ByVal ulOptions Jako Integer, ByVal samDesired Jako Integer, ByRef phkResult Jako IntPtr) Jako Integer
    Końcówka Funkcja

     _
    Intymny Podzielony Funkcja RegCloseKey (ByVal hKey Jako IntPtr) Jako Integer
    Końcówka Funkcja

     _
    Intymny Podzielony Funkcja WaitForSingleObject (ByVal rękojeść Jako IntPtr, ByVal ms Jako Integer) Jako Integer
    Końcówka Funkcja

    Intymny hKey Gdy IntPtr = IntPtr.Zero '/archiwum rękojeść
    Intymny hChangeHandle Gdy IntPtr = IntPtr.Zero '/archiwum powiadomienie rękojeść
    Intymny NotifyThread Jako Nić = Nic
    Intymny bCancel Boolowski = Fałszywy

    Jawny Okręt podwodny StartRegistryWatcher ()
        'Zegarek dla powiadomienie na oddzielny nić.
        bCancel = Fałszywy
        NotifyThread = Nowy Nić (AddressOf RegistryNotificationThread)
        NotifyThread.IsBackground = Prawdziwy
        NotifyThread.Start ()
    Końcówka Okręt podwodny

    Jawny Okręt podwodny StopRegistryWatcher ()
        'Odwoływać powiadomienie na the oddzielny nić.
        bCancel = Prawdziwy
        CeFindCloseRegChange (hChangeHandle)
    Końcówka Okręt podwodny

    '  <>
    Intymny Okręt podwodny RegistryNotificationThread ()
        'Bieg zmiana powiadomienie na nowy nić.
        RegisterRegistryChange (RegType.HKEY_LOCAL_MACHINE, "Oprogramowanie \ fabrikan", (0))
    Końcówka Okręt podwodny

    Intymny Okręt podwodny RegisterRegistryChange (ByVal rootKey Jako RegType, ByVal keyName Jako Sznurek, ByVal watchSubTree Jako Integer)
        'Wykrywać archiwum powiadomienie.
        Jeżeli RegOpenKeyEx (rootKey, keyName, (0), (0), hKey) <> (0) Wtedy
            MsgBox ("RegOpenKeyEx failed.")
            Powrót
        Kończyć Jeżeli
        'TODO: /Zmiana filtrowy położenie tutaj
        hChangeHandle = CeFindFirstRegChange (hKey, watchSubTree, RegNotifyFilter.REG_NOTIFY_CHANGE_LAST_SET)
        Jeżeli hChangeHandle.ToInt32 = -1 Wtedy
            MsgBox ("CeFindFirstRegChange nie udać się")
            RegCloseKey (hKey)
            Powrót
        Kończyć Jeżeli
        Robić Podczas Gdy bCancel <> Prawdziwy
            WaitForSingleObject (hChangeHandle, Timeout.Infinite)
            MsgBox ("Zmiana Wykrywać! ")
            CeFindNextRegChange (hChangeHandle)
            Thread.Sleep ((0))
        Pętla
        'TODO: /
        CeFindCloseRegChange (hChangeHandle)
        RegCloseKey (hKey)
    Końcówka Okręt podwodny

    Jawny Okręt podwodny DebugCreateRegistryEntry ()
        'Tworzyć the precyzować klucz w the archiwum dla debugging.
        Ciemnawy rk Jako RegistryKey = Registry.LocalMachine.OpenSubKey ("Oprogramowanie", Prawdziwy)
        rk.CreateSubKey ("fabrikan")
        rk. Zamykać ()
    Kończyć Okręt podwodny

    Jawny Okręt podwodny DebugChangeRegistryValue ()
        'Symulować zmiana w the archiwum dla debugging.
        Ćmić rk Jako RegistryKey = Registry.LocalMachine.OpenSubKey ("Oprogramowanie \ fabrikan", Prawdziwy)
        rk.SetValue ("fabrikans", TimeOfDay.Second.ToString, RegistryValueKind.String)
        rk. Zamykać ()
    Kończyć Okręt podwodny

Kończyć Klasa
Inne rozwiązania  
 
programming4us programming4us