Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
738 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  UWP et détection usb

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

UWP et détection usb

n°2285076
NicoLag
Posté le 12-07-2016 à 23:48:23  profilanswer
 

Bonjour,
J'ai fait des recherches sur le net, j'ai trouvé une tonne d'info, j'ai compris les grandes lignes... MAIS je dois pas avoir les connaissances qu'il faut pour bien comprendre !!
Voici mon problème :
Je voudrais, au lancement de mon application, trouver une clé usb avec son nom. Si elle est présente l'application se lance sinon elle se ferme après un message d'information.
D'après ce que j'ai compris, je pourrais détecter le branchement et le débranchement d'une clé.
 
J'aurais aimé trouver un tuto "simple" ou des exemples "simple" pour construire le bout de code pour trouver ma clé et si j'y arrive bien, ajouter la détection pour que l'application ne ferme pas mais laisse la possibilité de brancher la clé.
 
Merci pour votre aide et désolé si ça parait bête mais j'ai appris tout seul et je suis parfois largué !

mood
Publicité
Posté le 12-07-2016 à 23:48:23  profilanswer
 

n°2285082
TotalRecal​l
Posté le 13-07-2016 à 10:22:51  profilanswer
 

Hello,  
 
Si tu veux juste vérifier une seule fois au lancement (pas besoin de surveiller pour être notifié si la clé est branchée plus tard) et trouver une clé par son nom (en étant bien conscient que ça n'est pas une méthode fiable si c'est pour une question de sécurité), pas besoin d'API Windows ni d'UWP à mon avis, c'est ultra simple :  

Code :
  1. var drives = DriveInfo.GetDrives()
  2.                 .Where(drive => drive.IsReady && drive.DriveType == DriveType.Removable && drive.Name == "macleusb" );
  3. if(drives.Any())
  4. {
  5. // Clé trouvée
  6. blabla
  7. }
  8. else
  9. {
  10. // Clé pas trouvée
  11. Environment.Exit(1);
  12. }


Message édité par TotalRecall le 13-07-2016 à 10:23:04

---------------
Topic .Net - C# @ Prog
n°2285083
NicoLag
Posté le 13-07-2016 à 10:47:54  profilanswer
 

Merci pour ta réponse. Justement avant (en WinForms) je faisais comme ça mais ça a disparu. Maintenant c'est en passant par DeviceWatcher et j'y comprends pas grand chose (surtout au niveau de comment et ou ca se construit!).
En relisant la doc MSDN la dessus, j'ai vu que MS déconseillait fortement d'utiliser le nom comme identifiant (ce que je comprends). Ils disent d'utiliser la propriété Kind et ID pour ça. Du coup je me dit que ça doit être des infos "fixe" et que si au premier lancement je demande à l'utilisateur de choisir une clé, je l'enregistre et ensuite je pointerais en priorité sur celle ci.
Dans l'idée ça m'a pas l'air insurmontable mais j'ai l'impression que tout ce que je trouve est "tordu" pour le peu que je veux faire...

n°2285086
TotalRecal​l
Posté le 13-07-2016 à 11:06:17  profilanswer
 

http://stackoverflow.com/questions [...] icewatcher ?

 

Et sinon tu développes pour quelle plateforme ? DriveInfo ça me parait un basique quand même, autant je comprends que WMI ou les appels natifs puissent être problématiques, autant je ne pensais pas que DriveInfo pouvait être proscrit. Même si il y a des histoires de droits et cie derrière...

Message cité 1 fois
Message édité par TotalRecall le 13-07-2016 à 11:08:14

---------------
Topic .Net - C# @ Prog
n°2285088
NicoLag
Posté le 13-07-2016 à 11:47:22  profilanswer
 

Merci pour le lien. Je vais étudier ça et je te tiens au courant.
Sinon je code des app UWP pour dans le futur pouvoir faire des apps qui touchent plusieurs appareils MS (pour l'instant je me limite au desktop). Mais comme je le disait dans le premier post, je suis tout seul pour apprendre et je suis pas du tout codeur de formation (plus charpentier, en bureau d'étude mais charpentier quand même !!) du coup des fois je rame un peu (beaucoup!!) :pt1cable:

n°2285089
TotalRecal​l
Posté le 13-07-2016 à 11:51:03  profilanswer
 

Et pourquoi tu dis que DriveInfo "a disparu" ?
C'est une vraie question, je n'ai pas vérifié de mon côté, je ne fais pas encore d'UAP (et ça a l'air d'être un beau bordel pour certaines choses donc je ne suis pas impatient de m'y mettre..)


---------------
Topic .Net - C# @ Prog
n°2285093
NicoLag
Posté le 13-07-2016 à 12:34:49  profilanswer
 


Alors j'ai regardé cet article et en fait, en UWP, System.Managment n'existe plus (commence à me casser les pieds !!)
Du coup j'ai continué mes recherches et je suis tombé la dessus : https://msdn.microsoft.com/en-us/li [...] 67756.aspx
J'ai bien suivi les étapes mais j'ai une erreur ici :

Code :
  1. async void watcher_Added(DeviceWatcher sender, DeviceInformation deviceInterface)
  2.         {
  3.             interfaces[count] = deviceInterface;
  4.             count += 1;
  5.             if (isEnumerationComplete)
  6.             {
  7.                 await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
  8.                 {
  9.                     DisplayDeviceInterfaceArray();
  10.                 });
  11.             }
  12.         }


 
Au moment du count += 1 il me dit que l'index est en dehors du tableau ("Index was outside the bounds of the array." ) et je comprends pas pourquoi. Quelqu'un aurait une idée ?

n°2285094
NicoLag
Posté le 13-07-2016 à 12:36:31  profilanswer
 

TotalRecall a écrit :

Et pourquoi tu dis que DriveInfo "a disparu" ?
C'est une vraie question, je n'ai pas vérifié de mon côté, je ne fais pas encore d'UAP (et ça a l'air d'être un beau bordel pour certaines choses donc je ne suis pas impatient de m'y mettre..)


De ce que je comprends ils limitent les possibilités des app UWP d'aller fouiner la ou elles devraient pas. C'est pour ça aussi qu'ils ont enlevés le system.management apparement.

n°2285103
TotalRecal​l
Posté le 13-07-2016 à 14:10:38  profilanswer
 

Pour SystemManagement oui je comprend ça, d'ailleurs j'en parlais plus haut.  
Mais DriveInfo vient de System.IO et ce sont des objets BCL natifs, contrairement à SystemManagement qui donne accès à des objets Windows.
 
Pour ton erreur aucune idée. Pas moyen d'énumérer ça en mode synchrone et sans le côté événementiel pour avoir un truc plus simple ?


---------------
Topic .Net - C# @ Prog
n°2285110
NicoLag
Posté le 13-07-2016 à 16:55:34  profilanswer
 

J'ai trouvé le bug, c'était le tableau qui était trop petit !! En gros il me liste tout (et quand je dit tout c'est tout, driver audio, processeur, affichage...) sauf que ce qui m'interesse n'apparait pas avec le nom du coup je peux pas le trouver. Je vais tester sur un autre PC au cas ou mais j'ai déjà peur du résultat !  
J'ai l'impression que le bon vieux DriveInfo était trop simple pour MS du coup c'est mieux de l'enlever !!
Si jamais quelqu'un tombe sur une extension qui permet de le récupérer ça m'interesse !!

mood
Publicité
Posté le 13-07-2016 à 16:55:34  profilanswer
 

n°2285111
NicoLag
Posté le 13-07-2016 à 18:07:42  profilanswer
 

Si jamais ça peut aider, je vais expliquer la finalité de mon problème. Mon App (en WinForm) actuelle s'appuie sur une base SqlCE. Cette base est stockée sur une clé USB, comme ça mon App est installée sur plusieurs PC mais j'ai juste à brancher ma clé pour avoir mes infos à jour.
Aujourd'hui je voudrais faire une App UWP avec une base SQLite. Mon utilisation étant toujours la même, je voudrais pouvoir stocker ma base sur une clé et la retrouver dans mon App. Comme ça, pas besoin de connexion internet pour avoir la dernière base vu qu'il n'y en a qu'une.

n°2285349
NicoLag
Posté le 18-07-2016 à 20:50:03  profilanswer
 

J'ai essayé ça : https://github.com/Microsoft/Window [...] AndPairing
J'arrive avec le scenario 2 à trouver mes clé USB mais le nom qui apparaît n'est pas le nom que je leur ai donné mais le nom "d'usine" et je ne sais pas comment récupérer la lettre du lecteur choisi.
Est ce que quelqu'un a une idée ?

n°2285400
NicoLag
Posté le 20-07-2016 à 10:44:36  profilanswer
 

J'ai trouvé une solution (par un autre forum. Pardon...)  
J'utilise KnownFolders.RemovableDevices https://msdn.microsoft.com/library/ [...] vices.aspx
Et ça marche (pour l'instant, je dois encore tester un ou deux trucs mais je trouve ma clé et je peux fouiller dedans)
Merci pour vos idées

n°2285403
TotalRecal​l
Posté le 20-07-2016 à 11:06:59  profilanswer
 

Merci d'être revenu pour partager tes découvertes, c'est toujours sympa pour les éventuels intéressés qui pourraient passer sur ce topic dans l'avenir avec le même souci :jap:


---------------
Topic .Net - C# @ Prog
n°2285430
NicoLag
Posté le 20-07-2016 à 15:28:47  profilanswer
 

TotalRecall a écrit :

Merci d'être revenu pour partager tes découvertes, c'est toujours sympa pour les éventuels intéressés qui pourraient passer sur ce topic dans l'avenir avec le même souci :jap:


De rien je galère tellement quand je cherche que j'apprécie ceux qui le font. Et rien ne m'énerve plus que le message "C'est bon ça fonctionne" sans explication.
Voici le code un peu plus détaillé

Code :
  1. var folders = await KnownFolders.RemovableDevices.GetFoldersAsync();
  2.             foreach (var storageFolders in folders)
  3.             {
  4.                 //Work with file
  5.             }

n°2285431
TotalRecal​l
Posté le 20-07-2016 à 15:36:06  profilanswer
 

C'est tout simple.  
Par contre c'est bien pour avoir les lecteurs actuellement connectés (comme tu souhaites donc tout va bien!) et pas pour mettre un espèce de watcher dessus.


---------------
Topic .Net - C# @ Prog
n°2285436
NicoLag
Posté le 20-07-2016 à 17:09:34  profilanswer
 

En combinant les deux on doit pouvoir faire un truc sympa mais c'est pas utile pour moi donc je vais (pour l'instant!) pas chercher plus loin!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  UWP et détection usb

 

Sujets relatifs
SQLite et partage sur UWPdétection d'IP en php
Architecture en D3 JS (detection collision)Automatiser détection faciale et numérotation d’une photo de groupe
Algo de détection d'habitudes d'inscriptions[C]Détection de fin de fichier...
Détection d'obstacles Kit Spartan 3A-DSP XC3SD1800A-FG676 (FPGA)Detection pression touche
Multi select détection smart phonedétection de traps SNMP
Plus de sujets relatifs à : UWP et détection usb


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR