[How To] Detectar dispositivos USB con C#

agosto 09, 2016 Christian Amado 0 Comentarios

.NET En ocasiones necesitamos detectar los dispositivos que estamos conectando a la PC, es por eso que les comparto una muy buena opción para detectar las nuevas conexiones de dispositivos USB.

Simplemente utilizamos la clase ManagementEventWatcher y procesamos la consulta tal como se muestra en el ejemplo:

No olvidar agregar el espacio de nombres:
using System.Management;
ManagementEventWatcher watcher = new ManagementEventWatcher();
WqlEventQuery consulta = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.Query = consulta;
watcher.Start();
watcher.WaitForNextEvent();
El manejador de eventos quedaría así:
private void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
    //Realizar aquí la acción necesaria
}
Si necesitamos obtener la letra que el Sistema Operativo designó al dispositivo podemos utilizar esta simple línea de código:
//Dentro del evento watcher_EventArrived
e.NewEvent.Properties["DriveName"].Value.ToString();
De esta manera podemos detectar cambios realizados en el sistema operativo, detectando cambios al conectar los dispositivos externos.