Se non state sviluppando un dispositivo elettronico che si interfacci al vostro computer tramite USB, avrete pensato almeno una volta
“come posso gestire personalmente pen drive/lettore MP3/HD?”. Con il .NET framework è abbastanza semplice gestire qualunque periferica USB in maniera veloce e intuitiva, grazie alla classe
DriveDetector, sviluppata da
Jan Dolinay su
CodeProject.
L’
autore del codice descrive in questo modo il suo piccolo programma, che come tutti i progetti di
CodeProject è
liberamente scaricabile previa registrazione:
”allow your program to receive a notification when a removable drive (such as a flash drive) is inserted or removed. It also supports notifications about pending removal of such a device and cancelling this removal.”.
Vediamo allora un po’ più in dettaglio come funziona: la classe è specifica per il .NET framework 2.0 e funziona esclusivamente in ambiente grafico (niente console), e fondamentalmente va a fare un
override della funzione
WndProc, per intercettare i messaggi che il sistema operativo, tramite
WM_DEVICECHANGE, invia a tutte le applicazioni.
Il resto è abbastanza complicato, a meno che non abbiate specifiche conoscenze di come funzionano i messaggi in ambiente Windows (e ovviamente di come manipolarli in C#); per fortuna il codice ci mette in condizione di poter usare in maniera semplicissima le potenzialità di questi messaggi. Basta infatti importare la classe tramite la direttiva
using Dolinay;, creare un’istanza della classe
DriveDetector e aggiungere gli
handle per gli eventi che ci interessano:
DeviceArrived,
DeviceRemoved e
QueryRemove; penso non ci sia bisogno di spiegare a cosa servono, ma potete comunque trovarlo sulla
pagina ufficiale del progetto.
Sono presenti anche molti esempi e differenti implementazioni, mentre l’autore risponde, sempre su
CodeProject, ad eventuali dubbi o difficoltà derivanti dall’uso del suo sorgente. E’ il caso di fare una visitina a questa
pagina, sia che siate interessati a come vengono gestite le periferiche USB in C#, sia che vogliate approfondire il vostro bagaglio culturale su questi affascinanti argomenti.