IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

detecter l'insertion de usb en c#


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    csharp
    Inscrit en
    Février 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : csharp
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 17
    Points : 15
    Points
    15
    Par défaut detecter l'insertion de usb en c#
    Salut tout le monde
    Je voudrais détecter l'insertion d'usb en c# en utilisant le librairie libusb.
    Si qlq'un a une idée ou simple exemple qui me permettrait de faire cela, je le remercie d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Points : 713
    Points
    713
    Par défaut
    Hello,

    Ou bloques tu?
    A la mise en place de la librairie??
    Ou le code permettant de savoir si le périphérique est présent ou non?
    http://social.msdn.microsoft.com/For...7-b1f544de29b8
    Il y a un exemple complet d'utilisation de la librairie "UsbLibrary"

  3. #3
    Membre à l'essai
    Homme Profil pro
    csharp
    Inscrit en
    Février 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : csharp
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    bonjour tout le monde
    c'est ça exactement que je cherche mais j'ai rencontre un problème une erreur qui s'affiche au niveau de l'attribut usb et voila un exemple (usb.RegisterHandle(Handle)
    si quelqu'un possède une idée je le remercie d'avance

  4. #4
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    voila un code qui utilise les messages de Windows pour identifier qu'une USB est détectée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
     
    namespace USBDetector
    {
        /// <summary>
        /// Code coped from 
        /// http://www.lesite.com/codes/USB-DETECTOR_36407.aspx
        /// </summary>
    	public partial class frmMain : Form
    	{
    		private const int WM_DEVICECHANGE = 0x0219;
    		private const int DBT_DEVICEARRIVAL = 0x8000;
    		private const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
    		private const int DBT_DEVTYP_VOLUME = 0x2;
     
    		public frmMain()
    		{
    			InitializeComponent();
    		}
     
    		/// <summary>
    		/// Surcharge de la fonction de Message Loop, WndProc
    		/// </summary>
    		/// <param name="m">Message reçu dans la boucle de messages</param>
    		protected override void WndProc(ref Message m)
    		{
    			// le message est de type DEVICECHANGE, ce qui nous interesse
    			if (m.Msg == WM_DEVICECHANGE)
    			{
    				// le "sous-message" dit que le device vient d'etre pluggé
    				if (m.WParam.ToInt32() == DBT_DEVICEARRIVAL)
    				{
    					// device plugged
     
    					// on créé une structure depuis un pointeur a l'aide du Marshalling
    					// cette structure est generique mais on peut "l'interroger" comme une structure DEV_BROADCAST_HDR
    					DEV_BROADCAST_HDR hdr = (DEV_BROADCAST_HDR)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HDR));
     
    					// ok, le device pluggé est un volume (aussi appelé 'périphérique de stockage de masse')...
    					if (hdr.dbch_devicetype == DBT_DEVTYP_VOLUME)
    					{
    						// ... et donc on recréé une structure, a partir du même pointeur de structure "générique",
    						// une structure un poil plus spécifique
    						DEV_BROADCAST_VOLUME vol = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_VOLUME));
    						// le champs dbcv_unitmask contient la ou les lettres de lecteur du ou des devices qui viennent d'etre pluggé
    						// MSDN nous dit que si le bit 0 est à 1 alors le lecteur est a:, si le bit 1 est à 1 alors le lecteur est b:
    						// et ainsi de suite
    						uint mask = vol.dbcv_unitmask;
    						// recupèration des lettres de lecteurs
    						char[] letters = MaskDepioteur(mask);
     
    						// mise à jour de l'IHM pour notifier nos petits yeux tout content :)
    						this.Text = string.Format("USB key plugged on drive {0}:", letters[0].ToString().ToUpper());
    					}
    				}
    				// le device vient d'etre retirer bourrinement ou proprement
    				// (ce message intervient même quand on défait la clef softwarement mais qu'elle reste physiquement branché)
    				else if (m.WParam.ToInt32() == DBT_DEVICEREMOVECOMPLETE)
    				{
    					// device removed
     
    					// mise à jour de l'IHM
    					this.Text = "USB key unplugged";
    				}
    			}
     
    			// laissons notre fenêtre faire tout de même son boulot
    			base.WndProc(ref m);
    		}
     
    		// fonction d'extraction des lettres de lecteur
    		public static char[] MaskDepioteur(uint mask)
    		{
    			int cnt = 0;
    			uint temp_mask = mask;
     
    			// on compte le nombre de bits à 1
    			for (int i = 0; i < 32; i++)
    			{
    				if ((temp_mask & 1) == 1)
    					cnt++;
    				temp_mask >>= 1;
    				if (temp_mask == 0)
    					break;
    			}
     
    			// on instancie le bon nombre d'elements
    			char[] result = new char[cnt];
    			cnt = 0;
    			// on refait mais ce coup ci on attribut
    			for (int i = 0; i < 32; i++)
    			{
    				if ((mask & 1) == 1)
    					result[cnt++] = (char)('a' + i);
    				mask >>= 1;
    				if (mask == 0)
    					break;
    			}
     
    			return (result);
    		}
    	}
     
    	// structure générique
    	public struct DEV_BROADCAST_HDR
    	{
    		public uint dbch_size;
    		public uint dbch_devicetype;
    		public uint dbch_reserved;
    	}
     
    	// structure spécifique
    	// notez qu'elle a strictement le même tronche que la générique mais
    	// avec des trucs en plus
    	public struct DEV_BROADCAST_VOLUME
    	{
    		public uint dbcv_size;
    		public uint dbcv_devicetype;
    		public uint dbcv_reserved;
    		public uint dbcv_unitmask;
    		public ushort dbcv_flags;
    	}
    }
    j’espère qu' il va être utile pour vous .

  5. #5
    Membre à l'essai
    Homme Profil pro
    csharp
    Inscrit en
    Février 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : csharp
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Merci pour votre aide
    mais j'ai fait un projet dans une société et l'encadreur s’insère a utiliser le librairie usblib et je suis bloque de trouver une solution pour la détection d'un usb merci une autre fois

Discussions similaires

  1. Execution automatique sur insertion prériph USB
    Par Bernard B dans le forum Windows 7
    Réponses: 7
    Dernier message: 08/07/2012, 09h32
  2. [Linux Ubuntu] detection insertion stick usb
    Par dtcSearch dans le forum C
    Réponses: 0
    Dernier message: 27/01/2010, 23h32
  3. detection et chemin cle usb en c
    Par Gracus dans le forum C
    Réponses: 3
    Dernier message: 06/09/2009, 17h23
  4. Problème de detection de la clé USB
    Par Abdel58 dans le forum Matériel
    Réponses: 9
    Dernier message: 01/06/2006, 18h49
  5. Pas de detection de ma cle usb
    Par igloo dans le forum Matériel
    Réponses: 12
    Dernier message: 05/01/2006, 20h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo