OVH Cloud OVH Cloud

Comment écouter les ports USB

2 réponses
Avatar
ShadowFil
Bonjour,

Peut-on s'abonner à un événement .NET ou Windows qui m'avertirait si une
donnée vient d'arriver sur un des ports USB de mon PC ?

Sinon comment être à l'écoute des données qui arrivent sur les ports USB de
la machine ?

Merci pour votre aide.

2 réponses

Avatar
Philippe MASINA
Tu peux essayer de faire ça avec SharpUsbLib. Tu peux télécharger cette
bibliothèque à l'adresse suivante:

http://sourceforge.net/project/showfiles.php?group_id610&package_id7762

"ShadowFil" a écrit :

Bonjour,

Peut-on s'abonner à un événement .NET ou Windows qui m'avertirait si une
donnée vient d'arriver sur un des ports USB de mon PC ?

Sinon comment être à l'écoute des données qui arrivent sur les ports USB de
la machine ?

Merci pour votre aide.


Avatar
Ludovic SOEUR
Le namespace System.Management offre tout ce dont vous avez besoin, à
condition de travailler pour Windows.

Par exemple, vous pouvez initialiser un écouteur USB de la façon suivante :
oldUSBHandler=new EventArrivedEventHandler(USBEventArrived);
WqlEventQuery q=new WqlEventQuery("__InstanceOperationEvent",new
TimeSpan(0,0,1),@"TargetInstance ISA 'Win32_USBControllerDevice'");
USBWatcher=new ManagementEventWatcher(q);
USBWatcher.EventArrived+=oldUSBHandler;
USBWatcher.Start();
Et ne pas oublier de faire hériter votre classe de Component afin de mettre
dans la fonction Dispose les lignes permettant d'arrêter l'écouteur :
if (USBWatcher!=null) {
try {USBWatcher.Stop();} catch {}
USBWatcher.EventArrived-=oldUSBHandler;
USBWatcher.Dispose();
USBWatcher=null;
}
Avec pour définition bien sur :
private EventArrivedEventHandler oldUSBHandler;
private ManagementEventWatcher USBWatcher;

Enfin l'écouteur aurait par exemple la forme suivante :
private void USBEventArrived(object sender, EventArrivedEventArgs e) {
switch(e.NewEvent.ClassPath.ClassName) {
case "__InstanceCreationEvent" : {
//*****
//Votre code
//*****
} break;
case "__InstanceDeletionEvent" : {
//*****
//Votre code
//*****
} break;
case ........ : {
//*****
//Votre code
//*****
} break;
}
}

Bon courage dans la découverte de ce namespace et de Wql.

Cordialement,

Ludovic SOEUR.


"ShadowFil" a écrit dans le message de
news:
Bonjour,

Peut-on s'abonner à un événement .NET ou Windows qui m'avertirait si une
donnée vient d'arriver sur un des ports USB de mon PC ?

Sinon comment être à l'écoute des données qui arrivent sur les ports USB


de
la machine ?

Merci pour votre aide.