Question : comment détecter la commande démontable (commande de stylo)


Comment détecter la commande démontable using le code de vb

Merci

Réponse : comment détecter la commande démontable (commande de stylo)

Vous pouvez enregistrer des avis de dispositif pour le dispositif d'USB en enregistrant le guid d'usb et la vérification le message de WM_DEVICECHANGE. voir la section de code pour une version d'api.

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 :
124 :
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 :
135 :
136 :
137 :
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 :
148 :
149 :
150 :
151 :
152 :
153 :
154 :
155 :
156 :
157 :
158 :
159 :
160 :
161 :
162 :
163 :
164 :
165 :
166 :
167 :
168 :
169 :
170 :
171 :
172 :
173 :
174 :
' 
'//                   Module1.bas
' 

Option explicite

'egl1044
Const privé GWL_WNDPROC                en tant que longtemps = (- 4)
Const privé WM_DEVICECHANGE            en tant que longtemps = &H219
Const privé DBT_DEVICEARRIVAL          en tant que longtemps = 32768
Const privé DBT_DEVICEREMOVECOMPLETE   en tant que longtemps = 32772
Const privé DBT_DEVTYP_DEVICEINTERFACE en tant que longtemps = &H5&
Const privé DBT_DEVTYP_VOLUME          en tant que longtemps = &H2&
Const privé GUID_USB                   comme corde = « {A5DCBF10-6530-11D2-901F-00C04FB951ED} »

Type privé UUID
Data1               en tant que longtemps
Data2               comme nombre entier
Data3               comme nombre entier
Data4 (7)            comme byte
Type d'extrémité
 
Type privé DEV_BROADCAST_HDR
dbch_size           en tant que longtemps
dbch_devicetype     en tant que longtemps
dbch_reserved       en tant que longtemps
Type d'extrémité
 
Type privé DEV_BROADCAST_DEVICEINTERFACE
dbcc_size           en tant que longtemps
dbcc_devicetype     en tant que longtemps
dbcc_reserved       en tant que longtemps
dbcc_classguid      comme UUID
dbcc_name           en tant que longtemps
Type d'extrémité
 
Type privé DEV_BROADCAST_VOLUME
dbcv_size           en tant que longtemps
dbcv_devicetype     en tant que longtemps
dbcv_reserved       en tant que longtemps
dbcv_unitmask       en tant que longtemps
dbcv_flags          comme nombre entier
Type d'extrémité
 
Privé déclarer la bibliothèque « User32.dll » de CallWindowProcW de fonction (le _
    lpPrevWndFunc de ByVal en tant que longtemps, _
    hWnd de ByVal en tant que longtemps, _
    uMsg de ByVal en tant que longtemps, _
    wParam de ByVal en tant que longtemps, _
    lParam de ByVal en tant que longtemps) en tant que longtemps
    
Privé déclarer la bibliothèque « User32.dll » de SetWindowLongW de fonction (le _
    hWnd de ByVal en tant que longtemps, _
    nIndex de ByVal en tant que longtemps, _
    dwNewLong de ByVal en tant que longtemps) en tant que longtemps
    
Privé déclarer la bibliothèque « User32.dll » de RegisterDeviceNotificationW de fonction (le _
    ByVal hRecipient en tant que longtemps, _
    ByVal NotificationFilter en tant que longtemps, _
    Drapeaux de ByVal en tant que longtemps) en tant que longtemps

Privé déclarer la bibliothèque « User32.dll » d'UnregisterDeviceNotification de fonction (le _
    Poignée de ByVal en tant que longtemps) en tant que longtemps

Privé déclarer la bibliothèque « Ole32.dll » de CLSIDFromString de fonction (le _
    Lpsz de ByVal en tant que longtemps, _
    Pclsid de ByRef comme UUID) en tant que longtemps

Privé déclarer la bibliothèque secondaire « Kernel32.dll » de RtlMoveMemory (le _
    Destination de ByRef en tant que quels, _
    Source de ByRef en tant que quels, _
    Longueur de ByVal en tant que longtemps)
    
Privé déclarer la bibliothèque secondaire « Kernel32.dll » de RtlZeroMemory (le _
    Dst de ByRef en tant que quels, _
    nBytes de ByVal en tant que longtemps)
 

Fonctionnel public         en tant que longtemps
hDev public         en tant que longtemps
hWindow public      en tant que longtemps

Faible lpdb            comme DEV_BROADCAST_HDR
Faible lpdbv           comme DEV_BROADCAST_VOLUME
Faible lpdbdi          comme DEV_BROADCAST_DEVICEINTERFACE
Faible fUsb            comme booléen

Fonction privée GetDriveFromMask (ByVal UnitMask en tant que longtemps) comme corde
    GetDriveFromMask = Chr$ (65 + (notation) (d'UnitMask/notation (2)))
Fonction de fin
 
RegisterDeviceInterfaceToHwnd secondaire public (hWnd de ByVal en tant que longtemps)
    Faible lpdbd       comme DEV_BROADCAST_DEVICEINTERFACE
    Faible lpusb       comme UUID
    Si 0 <> fonctionnel puis
        Sortir le sous-marin
    Finir si
    hWindow = hWnd
    CLSIDFromString StrPtr (GUID_USB), lpusb
    lpdbd.dbcc_size = Len (lpdbd)
    lpdbd.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE
    lpdbd.dbcc_classguid = lpusb
    hDev = RegisterDeviceNotificationW (hWindow, VarPtr (lpdbd), 0)
    fonctionnel = SetWindowLongW (hWindow, GWL_WNDPROC, AddressOf OnUsbChange)
Sous-marin d'extrémité
 
UnRegisterDeviceInterface secondaire public ()
    hDev d'UnregisterDeviceNotification
    fonctionnel = SetWindowLongW (hWindow, GWL_WNDPROC, fonctionnels)
    = 0 fonctionnel
    hWindow = 0
Sous-marin d'extrémité
 
Fonction publique OnUsbChange (hWnd de ByVal en tant qu'uMsg longtemps, de ByVal en tant que wParam longtemps, de ByVal en tant que lParam longtemps, de ByVal en tant que longtemps) en tant que longtemps

    Si uMsg = puis WM_DEVICECHANGE
    
        Choisir le wParam de cas
        
            Enfermer DBT_DEVICEARRIVAL
                Lpdb de RtlMoveMemory, lParam& de ByVal, Len (lpdb)
                
                Si lpdb.dbch_devicetype = puis DBT_DEVTYP_DEVICEINTERFACE
                    Lpdbdi de RtlMoveMemory, lParam& de ByVal, Len (lpdbdi)
                    le fUsb = rectifient
                Finir si
                
                Si lpdb.dbch_devicetype = puis DBT_DEVTYP_VOLUME et fUsb
                    Lpdbv de RtlMoveMemory, lParam& de ByVal, Len (lpdbv)
                    fUsb = faux
                    '                       Inséré
                    Debug.Print « a inséré @ le drive= » et le GetDriveFromMask (lpdbv.dbcv_unitmask)
                Finir si
                
            Enfermer DBT_DEVICEREMOVECOMPLETE
                Lpdb de RtlMoveMemory, lParam& de ByVal, Len (lpdb)
                
                Si lpdb.dbch_devicetype = puis DBT_DEVTYP_DEVICEINTERFACE
                    Lpdbdi de RtlMoveMemory, lParam& de ByVal, Len (lpdbdi)
                     le fUsb = rectifient
                Finir si
                
                Si lpdb.dbch_devicetype = puis DBT_DEVTYP_VOLUME et fUsb
                    Lpdbv de RtlMoveMemory, lParam& de ByVal, Len (lpdbv)
                    fUsb = faux
                    '                       Enlevé
                    Debug.Print « a enlevé @ le drive= » et le GetDriveFromMask (lpdbv.dbcv_unitmask)
                Finir si
                
        Finir choisi
    Finir si
    OnUsbChange = CallWindowProcW (fonctionnel, hWnd, uMsg, wParam, lParam)
Fonction de fin








'
'//              Form1.frm
'

Option explicite

Form_Load secondaire privé ()
    Appel RegisterDeviceInterfaceToHwnd (Me.hWnd)
Sous-marin d'extrémité
 
Form_QueryUnload secondaire privé (annulation comme nombre entier, UnloadMode comme nombre entier)
    Appel UnRegisterDeviceInterface
Sous-marin d'extrémité
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