Question : détecter le ce de fenêtres de changement d'enregistrement

Bonjour, je dois détecter quand les valeurs d'enregistrement changent sur Windows CE using vb.net. class= de

Réponse : détecter le ce de fenêtres de changement d'enregistrement

J'ai eu un certain temps pour jouer avec les fonctions.  J'ai employé l'émulateur et cela fonctionne très bien sur celui ;)… Exemple également situé sur 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 :
Système d'importations
Importations System.Threading
Importations System.Runtime.InteropServices
Importations Microsoft.Win32

Classe publique RegistryNotification
    'egl1044

    'Constructeur
    Nouveaux secondaires publics ()

    Sous-marin d'extrémité

     _
    Enum public RegNotifyFilter
        REG_NOTIFY_CHANGE_NAME = 1 'informent le visiteur si un subkey est ajouté ou supprimé.
        REG_NOTIFY_CHANGE_LAST_SET = 4 'informent le visiteur des changements à une valeur de la clef. Ceci peut inclure ajouter ou supprimer une valeur ou changer une valeur existante.
    Extrémité Enum

    Enum public RegType
        HKEY_LOCAL_MACHINE = &H80000002
        HKEY_CLASSES_ROOT = &H80000000
        HKEY_CURRENT_USER = &H80000001
        HKEY_USERS = &H80000003
    Extrémité Enum

    'Non mis en application dans cet exemple.
    ' _
    'Structure privée REG_NOTIFY_INFORMATION
    '    Faible NextEntryOffset comme nombre entier
    '    Faible action comme nombre entier
    '    Faible RegNameLength comme nombre entier
    '    Faible RegName comme IntPtr
    'Structure d'extrémité

     _
    Fonction partagée privée CeFindCloseRegChange (hChangeHandle de ByVal comme IntPtr) comme nombre entier
    Fonction de fin

     _
    Fonction partagée privée CeFindFirstRegChange (hKey de ByVal comme bWatchSubtree d'IntPtr, de ByVal comme dwNotifyFilter de nombre entier, de ByVal comme RegNotifyFilter) comme IntPtr
    Fonction de fin

     _
    Fonction partagée privée CeFindNextRegChange (hChangeHandle de ByVal comme IntPtr) comme nombre entier
    Fonction de fin

     _
    Fonction partagée privée RegOpenKeyEx (hKey de ByVal comme lpSubKey de RegType, de ByVal comme la corde, ulOptions de ByVal comme nombre entier, ByVal samDesired comme nombre entier, phkResult de ByRef comme IntPtr) comme nombre entier
    Fonction de fin

     _
    Fonction partagée privée RegCloseKey (hKey de ByVal comme IntPtr) comme nombre entier
    Fonction de fin

     _
    Fonction partagée privée WaitForSingleObject (poignée de ByVal comme Mme d'IntPtr, de ByVal comme nombre entier) comme nombre entier
    Fonction de fin

    hKey privé comme IntPtr = IntPtr.Zero '/poignée d'enregistrement
    hChangeHandle privé comme IntPtr = IntPtr.Zero '/poignée avis d'enregistrement
    NotifyThread privé en tant que fil = rien
    bCancel privé comme booléen = faux

    StartRegistryWatcher secondaire public ()
        'Montre pour des avis dans un fil séparé.
        bCancel = faux
        NotifyThread = nouveau fil (AddressOf RegistryNotificationThread)
        NotifyThread.IsBackground = rectifient
        NotifyThread.Start ()
    Sous-marin d'extrémité

    StopRegistryWatcher secondaire public ()
        'Décommander les avis dans le fil séparé.
        le bCancel = rectifient
        CeFindCloseRegChange (hChangeHandle)
    Sous-marin d'extrémité

    '  <>
    RegistryNotificationThread secondaire privé ()
        'Courir les avis de changement dans le nouveau fil.
        RegisterRegistryChange (RegType.HKEY_LOCAL_MACHINE, « logiciel \ fabrikan », 0)
    Sous-marin d'extrémité

    RegisterRegistryChange secondaire privé (rootKey de ByVal comme keyName de RegType, de ByVal comme watchSubTree de corde, de ByVal comme nombre entier)
        'Détecte des avis d'enregistrement.
        Si RegOpenKeyEx (rootKey, keyName, 0, 0, hKey) <> 0 puis
            MsgBox (« RegOpenKeyEx failed.")
            Retour
        Finir si
        'TODO : /arrangements filtre de changement ici
        hChangeHandle = CeFindFirstRegChange (hKey, watchSubTree, RegNotifyFilter.REG_NOTIFY_CHANGE_LAST_SET)
        Si hChangeHandle.ToInt32 = -1 puis
            MsgBox (« CeFindFirstRegChange a échoué »)
            RegCloseKey (hKey)
            Retour
        Finir si
        Faire tandis que bCancel <> vrai
            WaitForSingleObject (hChangeHandle, Timeout.Infinite)
            MsgBox (« changement détecté ! ")
            CeFindNextRegChange (hChangeHandle)
            Thread.Sleep (0)
        Boucle
        'TODO : /
        CeFindCloseRegChange (hChangeHandle)
        RegCloseKey (hKey)
    Sous-marin d'extrémité

    DebugCreateRegistryEntry secondaire public ()
        'Crée la clef spécifique dans l'enregistrement pour l'élimination des imperfections.
        Faible rk comme RegistryKey = Registry.LocalMachine.OpenSubKey (« logiciel », vrais)
        rk.CreateSubKey (« fabrikan »)
        rk. Se fermer ()
    Finir le sous-marin

    DebugChangeRegistryValue secondaire public ()
        'Simuler un changement de l'enregistrement pour l'élimination des imperfections.
        Obscurcir le rk comme RegistryKey = Registry.LocalMachine.OpenSubKey (« logiciel \ fabrikan », vrais)
        rk.SetValue (« fabrikans », TimeOfDay.Second.ToString, RegistryValueKind.String)
        rk. Se fermer ()
    Finir le sous-marin

Finir la classe
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us