hawk13120
Messages postés10Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention10 mai 2005
-
10 mai 2005 à 11:58
xrog2004
Messages postés1Date d'inscriptionsamedi 19 juin 2004StatutMembreDernière intervention18 décembre 2006
-
18 déc. 2006 à 16:33
Salut a tous,
voila je debute en csharp et j'ai du mal a suivre tous ce que vous dite
en fait je souhaiterais creer un programme qui detecterai si j'ai branché un peripheriqueusb et qui a ce moment la pourrai commencer une copie de sauvegarde ou autre.
pour la copie des fichiers et tous le reste ca va, je devrai m'en sortir
mais le probleme est la detection du peripherique
j'ai vu ce topic mais en fait je comprend pas grand chose:
http://www.csharpfr.com/forum.v2.aspx?ID=436000
Je ne comprend comment fonctionne le lancement de la fonction WndProc
de plus WM_DEVICECHANGE n'est pas reconnu dans csharp il doit manquer quelque chose
mais pour savoir quoi ...
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 10 mai 2005 à 12:14
Salut,
Comment ça le lancement de WndProc ?
Pour WM_DEVICECHANGE sa valeur est définie dans le fichier winuser.h du PlatformSDK (comme c'est indiqué en bas de la doc)
Pour utiliser cette valeur rajoute ceci dans ton code :
private const int WM_DEVICECHANGE = 0x0219;
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 10 mai 2005 à 12:36
En fait WndProc existe déjà, elle effectue le traitement des messages reçu.
Ce que nous on fait c'est un override pour rajouter notre propre code de traitement avant de laisser la classe de base (Form) faire son propre traitement.
En gros là tu as "juste" à c/c le code dans ton form.
Cocoricoooooooo !!!!
coq
MVP Visual C#
Vous n’avez pas trouvé la réponse que vous recherchez ?
hawk13120
Messages postés10Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention10 mai 2005 10 mai 2005 à 15:55
Ok merci
mais comment ce fait il qu'il m'execute plusieurs fois mon traitement ?
et comment pourrais-je maintenant recuperer la lettre de lecteur que le systeme d'exploitation lui a affecté ? Est ce que je dois utiliser m.WParam comme tu le dis dans le topic que j'ai precisé tout à l'heure ?
hawk13120
Messages postés10Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention10 mai 2005 10 mai 2005 à 17:21
ok
j'ai regarder MSDN on y trouve ca mais ca reste vague.
DBT_DEVICEARRIVAL veut dire que un media a été inseré mais comment je recupere les propriétés de ce media, je doit declarer une variable d'un type bien precis ou autre
le seul exemple de code n'est carrement pas clair pour moi en plus c'est pas du csharp.
je t'en suppli coq baisse pas les bras a m'expliquer
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 10 mai 2005 à 19:21
Tu interceptes WM_DEVICECHANGE si WParam est egal a DBT_DEVICEARRIVAL alors LParam est un pointeur sur une structure DEV_BROADCAST_HDR si le membre DEV_BROADCAST_HDR.dbch_devicetype est egale a DBT_DEVTYP_VOLUME alors il s'agit de l'insertion d'un nouveau volume, il faut alors traiter WParam comme une structure DEV_BROADCAST_VOLUME et le membre DEV_BROADCAST_VOLUME.dbcv_unitmask contient la lettre du lecteur.
Tout ca c'est pour traiter le message WM_DEVICECHANGE dans WndProc mais si tu ne comprends pas les fichiers header du C ce sera trop difficile. De plus je pense que ce n'est pas la meilleur solution ni la plus simple en C#, regarde du cote des librairies usb.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 10 mai 2005 à 23:28
j'ai jamais utilise cette librairie mais vu son nom ca doit correspondre..
Je pense que ca ne remplace pas WM_DEVICECHANGE mais on doit pouvoir enumerer les devices presents.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 10 mai 2005 à 23:44
Enumerer oui, mais notre probleme (si j'ai bien saisi) est d'etre averti du branchement d'un nouvel appareil (entre autre) un peu à la manière event.
Hors avec ce genre de lib à part boucler sur la liste pour voir les changements je ne vois pas comment faire.
Bref, sujet à approfondir :-)
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 11 mai 2005 à 01:27
Je parlais de librairies qui peuvent simplifier l'utilisation des peripheriques USB pas forcement qui remplace WM_DEVICECHANGE.. Je connais pas d'autres moyens, meme avec DirectInput on passe par WM_DEVICECHANGE..
xrog2004
Messages postés1Date d'inscriptionsamedi 19 juin 2004StatutMembreDernière intervention18 décembre 2006 18 déc. 2006 à 16:33
Bonjour,
J'aurais voulu savoir comment recuperer les valeurs de dbcv_.....
et ou peut on trouver des bon tutos sur le WMI, le c#
en vous remerciant d'avance.