registrarsi per un evento in Windows
-
27-09-2019 - |
Domanda
Ciao Voglio fare qualcosa quando una chiavetta di memoria collegato al PC. Ora io uso un timer e controllarla in ogni tick se un memory stick è inserita (utilizzare DriveInfo o con l'esecuzione di query WMI) C'è qualche modello event-driven a disposizione per fare? per esempio io uso un evento nel mio programma che rilancio ogni volta che un memory stick sia collegato al computer?
Soluzione
Si vuole gestire il WM_DEVICECHANGE messaggio nella WndProc. Quando si maneggiano che, è anche possibile chiamare RegisterDeviceNotification
per ottenere la notifica che il bastone viene espulso in modo pulito.
Quando si riceve una WM_DEVICECHANGE
, si desidera controllare il wParam - DBT_DEVICEARRIVAL
(0x800) è quello che stai cercando per
In C ++, si dovrebbe avere problemi con il WndProc. In C #, ti consigliamo di eseguire l'override del modulo principale WndProc metodo e controllo m.Msg == 0x219
e m.WParam == 0x800
. Si noti che non tutti questi sarà una memory stick -. Ma è possibile utilizzare questo per notificare per verificare l'inserimento dell'unità piuttosto che un timer