Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD10] Savoir si un lecteur est USB

6 réponses
Avatar
Georges Peyre
Bonjour,

A l'aide du code qui suit je récupère la liste des lecteurs.
Je voudrai en plus préciser qu'un lecteur est un disque dur externe sur
un port USB.
Avec ce code ce disque est affecté du libellé "Disque local" c'est à
dire comme un disque dur interne

Comment distinguer ce disque dur externe ?

Je voudrais simplement pouvoir ..
Soit préciser que c'est un lecteur USB
Soit afficher son nom comme le fait l'explorateur ( IOMEGA_HDD ) dans
le poste de travail

J'ai essayé toutes les fonctions USB de la version WD10 sans succès.
Je n'ai pas trouvé une seule fonction qui me permettrait de savoir
simplement par exemple si le Lecteur J: est un lecteur USB ou de
récupérer le nom du fabricant du lecteur J:

Quand on liste les périphériques USB il n'y a aucune correspondance de
faite avec la lettre du lecteur !

Est-ce que quelqu'un parmi vous y est arrivé ?

Cordialement



------- Code de récupération des lecteurs ----------------------
eTyp est un entier
sCh est une chaîne
sAfficheDisq est une chaîne
eid est un entier
sDisque est une chaîne

//Initialisation
ListeSupprimeTout(ListeDisques)

POUR eid=1 A 26
sCh=Caract(Asc("A")+eid-1)+":"
// Demande le type du lecteur
SELON fDisqueInfo(sCh,fdTypeDisque)
CAS fdInvalide
eTyp=0
sAfficheDisq=""
CAS fdAmovible
eTyp=4 // Disquette
sAfficheDisq="Disque amovible"
CAS fdFixe
eTyp=5 // Disque dur
sAfficheDisq="Disque local"
CAS fdRéseau
eTyp=6 // Réseau
sAfficheDisq="Réseau"
CAS fdCDRom
eTyp=7 // CD
sAfficheDisq="CD Rom"
CAS fdRAM
eTyp=8 // RAM
sAfficheDisq="Disque RAM"
AUTRE CAS
eTyp=6 // Inconnu: comme si réseau
sAfficheDisq="Inconnu"
FIN
SI eTyp = 5 OU eTyp = 4 ALORS
SI PAS sCh = "A:" ALORS
// Disque ou réseau: ignore les disquettes
ListeAjoute(ListeDisques,sCh +" " + sAfficheDisq)
FIN
FIN
FIN

--
Elle est pas belle la vie ?

6 réponses

Avatar
Val
Bonjour


"Georges Peyre" a écrit dans le message de news:

Bonjour,

A l'aide du code qui suit je récupère la liste des lecteurs.
Je voudrai en plus préciser qu'un lecteur est un disque dur externe sur un
port USB.
Avec ce code ce disque est affecté du libellé "Disque local" c'est à dire
comme un disque dur interne

Comment distinguer ce disque dur externe ?

Je voudrais simplement pouvoir ..
Soit préciser que c'est un lecteur USB
Soit afficher son nom comme le fait l'explorateur ( IOMEGA_HDD ) dans
le poste de travail

J'ai essayé toutes les fonctions USB de la version WD10 sans succès.
Je n'ai pas trouvé une seule fonction qui me permettrait de savoir
simplement par exemple si le Lecteur J: est un lecteur USB ou de récupérer
le nom du fabricant du lecteur J:

Quand on liste les périphériques USB il n'y a aucune correspondance de
faite avec la lettre du lecteur !

Est-ce que quelqu'un parmi vous y est arrivé ?

Cordialement



------- Code de récupération des lecteurs ----------------------
eTyp est un entier
sCh est une chaîne
sAfficheDisq est une chaîne
eid est un entier
sDisque est une chaîne

//Initialisation
ListeSupprimeTout(ListeDisques)

POUR eid=1 A 26
sChÊract(Asc("A")+eid-1)+":"
// Demande le type du lecteur
SELON fDisqueInfo(sCh,fdTypeDisque)
CAS fdInvalide
eTyp=0
sAfficheDisq=""
CAS fdAmovible
eTyp=4 // Disquette
sAfficheDisq="Disque amovible"
CAS fdFixe
eTyp=5 // Disque dur
sAfficheDisq="Disque local"
CAS fdRéseau
eTyp=6 // Réseau
sAfficheDisq="Réseau"
CAS fdCDRom
eTyp=7 // CD
sAfficheDisq="CD Rom"
CAS fdRAM
eTyp=8 // RAM
sAfficheDisq="Disque RAM"
AUTRE CAS
eTyp=6 // Inconnu: comme si réseau
sAfficheDisq="Inconnu"
FIN
SI eTyp = 5 OU eTyp = 4 ALORS
SI PAS sCh = "A:" ALORS
// Disque ou réseau: ignore les disquettes
ListeAjoute(ListeDisques,sCh +" " + sAfficheDisq)
FIN
FIN
FIN

--
Elle est pas belle la vie ?





Sous Windows XP, on peut récupérer "quelques" informations au niveau des
unités disques dans la base de registres de Windows.
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDiskEnum

A+

Val
Avatar
Georges Peyre
Bonjour

Val avait soumis l'idée :
Sous Windows XP, on peut récupérer "quelques" informations au niveau des
unités disques dans la base de registres de Windows.
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDiskEnum



C'est vrai mais comment faire la liaison avec la lettre du lecteur de
mon choix dans la liste des lecteurs que j'ai chargés ?

Par contre en attendant j'ai quand même récupéré le nom du disque
avec par exemple :
sCh est une chaine = "J:"
sNomVolume = fDisqueInfo(sCh, fdNomVolume)

Le problème c'est que selon le support le nom est absent

C'est pour celà que je voudrais pouvoir au moins préciser que le
lecteur est USB

Cordialement

--
Elle est pas belle la vie ?
Avatar
Robert-Olivier Cayot
Georges Peyre a écrit :

Bonjour,

A l'aide du code qui suit je récupère la liste des lecteurs.
Je voudrai en plus préciser qu'un lecteur est un disque dur externe sur
un port USB.
Avec ce code ce disque est affecté du libellé "Disque local" c'est à
dire comme un disque dur interne

Comment distinguer ce disque dur externe ?

Je voudrais simplement pouvoir ..
Soit préciser que c'est un lecteur USB
Soit afficher son nom comme le fait l'explorateur ( IOMEGA_HDD ) dans
le poste de travail



...

J'ai eu le même problème a résoudre, et après quelques recherche j'ai
remarqué que les identifiants de lecteur USB (enfin tous ceux que j'ai
testé) commencent par "USB".

donc personnellement je procède comme suis :

// Les Identifiant d'un lecteur USB commence par "USB"
SI Gauche (USBRecherche(USBLecteur, sLecteur), 4) = "USB" ALORS
FIN

Je sais, c'est un peu bricolo, mais je n'avais pas le temps de me
pencher sur les API pour trouver mieux :)

Bob.
Avatar
Georges Peyre
Bonjour,

Robert-Olivier Cayot a présenté l'énoncé suivant :

J'ai eu le même problème a résoudre, et après quelques recherche j'ai
remarqué que les identifiants de lecteur USB (enfin tous ceux que j'ai testé)
commencent par "USB".

donc personnellement je procède comme suis :

// Les Identifiant d'un lecteur USB commence par "USB"
SI Gauche (USBRecherche(USBLecteur, sLecteur), 4) = "USB" ALORS
FIN




Je n'ai pas du tout le texte USB

Cette commande simple ...
Trace (USBRecherche(USBLecteur, sLecteur))

Affiche toujours "HTREEROOT" pour tous les disques durs, qu'ils
soient internes ou externes connecté sur USB

Cordialement

--
Elle est pas belle la vie ?
Avatar
jacques trepp
Georges Peyre a écrit :
Tu peux tester ce code :

Résultat_usb, Résultat_usb1 sont des chaînes
Résultat_usb = USBRecherche(USBLecteur,Combo1[Combo1])
SI SansEspace(Résultat_usb) = "" ALORS
Erreur("Aucun périphérique USB n'a été détecté !")
SINON
Résultat_usb1 =
USBPropriété(ExtraitChaîne(Résultat_usb,rangPremier),USBPropriétéDescription)
SI SansEspace(Résultat_usb1) <> "" ALORS
Info("Trouvé : "+SansEspace(Résultat_usb1))
FIN
FIN


Combo1[Combo1] est la lettre du disque sélectionné dans la combo (C: F:,
etc.)


--
Jacques Trepp
Albygest - 81160 - St Juery
jacques-pas de
(enlever '-pas de spam' pour me joindre)
http://www.albygest.com
Avatar
Georges Peyre
Bonjour Jacques,

jacques trepp a utilisé son clavier pour écrire :
Résultat_usb, Résultat_usb1 sont des chaînes
Résultat_usb = USBRecherche(USBLecteur,Combo1[Combo1])
SI SansEspace(Résultat_usb) = "" ALORS
Erreur("Aucun périphérique USB n'a été détecté !")
SINON
Résultat_usb1 =
USBPropriété(ExtraitChaîne(Résultat_usb,rangPremier),USBPropriétéDescription)
SI SansEspace(Résultat_usb1) <> "" ALORS
Info("Trouvé : "+SansEspace(Résultat_usb1))
FIN
FIN

Combo1[Combo1] est la lettre du disque sélectionné dans la combo (C: F:,
etc.)



Cette forme d'écriture ne focntionne pas du tout avec la propriété
USBLecteur même en mettant en dur la lettre du lecteur comme il l'est
précisé dans l'aide
// cette forme ne donne aucun message ni autre résultat
Résultat_usb = USBRecherche(USBLecteur,"J:")

Le seul résultat que j'ai obtenu c'est en modifiant un peu ton code
Résultat_usb, Résultat_usb1 sont des chaînes
// on recherche le mot stockage au lieu du lecteur
Résultat_usb = USBRecherche(USBPropriétéDescription,"stockage")
SI SansEspace(Résultat_usb) = "" ALORS
Erreur("Aucun périphérique USB n'a été détecté !")
SINON
Résultat_usb1 =
USBPropriété(ExtraitChaîne(Résultat_usb,rangPremier),USBPropriétéDescription)
SI SansEspace(Résultat_usb1) <> "" ALORS
Info("Trouvé : "+SansEspace(Résultat_usb1))
FIN
FIN

En résultat le message a affiché "Trouvé : Périphérique de stockage de
masse USB"

Nota :
si je remplace stockage par masse : le message est le meme
si je remplace stockage par USB : il n'y a aucun message trouvé

Cordialement

--
Elle est pas belle la vie ?