OVH Cloud OVH Cloud

WDxx Infos de marque d'un support physique

3 réponses
Avatar
Georges Peyre
Bonjour

Je cherche une API ou autre moyen utilisable par Windev qui me
permettrait d'afficher les propriétés de marque, modèle et capacité
d'un support physique de façon à obtenir par exemple le résultat
suivant :

Disque Dur : Maxtor 6Y120M0 (114GB)
ou
CD-ROM/DVD : SAMSUNG CD-R/RW SW-252S (CD 52X Rd, 52X Wr)
etc ..

Cordialement



--
Elle est pas belle la vie ?

3 réponses

Avatar
Georges Peyre
Georges Peyre a exprimé avec précision :
Je cherche une API ou autre moyen utilisable par Windev qui me permettrait
d'afficher les propriétés de marque, modèle et capacité d'un support physique
de façon à obtenir par exemple le résultat suivant :



J'ai trouvé les informations que je cherche dans le registre et pour
les afficher j'utilise par exemple le code rudimentaire suivant :

ResLecture est une chaîne
ResSupport est une chaîne
ResIdentite est une chaîne

ResExecute est un booléen
ResListe est une chaîne = ""

ResLecture =
RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor","ProcessorNameString",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + "Processeur : " + SansEspace(ResLecture) + RC +
RC
FIN
ResSupport =
RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsiScsi Port
0Scsi Bus 0Target Id 0Logical Unit Id 0","Type",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + "ZIP Permanent" + " : "
FIN
ResIdentite =
RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsiScsi Port
0Scsi Bus 0Target Id 0Logical Unit Id 0","Identifier",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + ResIdentite + RC
FIN
ResSupport =
RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsiScsi Port
1Scsi Bus 0Target Id 0Logical Unit Id 0","Type",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + "CD-ROM / DVD " + " : "
FIN
ResIdentite =
RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsiScsi Port
1Scsi Bus 0Target Id 0Logical Unit Id 0","Identifier",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + ResIdentite + RC
FIN
--------

L'affichage de ces infos aurait certainement été plus élégant avec une
lecture séquentielle de toutes les branches du registre appartenant a
la racine principale "HKEY_LOCAL_MACHINEHARDWAREDEVICEMAP" en
détectant à chaque lecture les clés "Identifier" ou "Type"
Je n'arrive pas à écrire cette lecture séquentielle

Quelqu'un aurait-il un exemple de code qui permettrait de lire
séquentiellement toutes les sous-clés appartenant à une racine de clé
du registre ?

Cordialement


--
Elle est pas belle la vie ?
Avatar
Gilles TOURREAU
Georges Peyre avait écrit le 01/08/2006 :
Georges Peyre a exprimé avec précision :
Je cherche une API ou autre moyen utilisable par Windev qui me permettrait
d'afficher les propriétés de marque, modèle et capacité d'un support
physique de façon à obtenir par exemple le résultat suivant :



J'ai trouvé les informations que je cherche dans le registre et pour les
afficher j'utilise par exemple le code rudimentaire suivant :

ResLecture est une chaîne
ResSupport est une chaîne
ResIdentite est une chaîne

ResExecute est un booléen
ResListe est une chaîne = ""

ResLecture =
RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor","ProcessorNameString",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + "Processeur : " + SansEspace(ResLecture) + RC + RC
FIN
ResSupport = RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsiScsi
Port 0Scsi Bus 0Target Id 0Logical Unit Id 0","Type",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + "ZIP Permanent" + " : "
FIN
ResIdentite = RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsiScsi
Port 0Scsi Bus 0Target Id 0Logical Unit Id 0","Identifier",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + ResIdentite + RC
FIN
ResSupport = RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsiScsi
Port 1Scsi Bus 0Target Id 0Logical Unit Id 0","Type",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + "CD-ROM / DVD " + " : "
FIN
ResIdentite = RegistreLit("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsiScsi
Port 1Scsi Bus 0Target Id 0Logical Unit Id 0","Identifier",ResExecute)
SI ResExecute = Vrai ALORS
ResListe = ResListe + ResIdentite + RC
FIN
--------

L'affichage de ces infos aurait certainement été plus élégant avec une
lecture séquentielle de toutes les branches du registre appartenant a la
racine principale "HKEY_LOCAL_MACHINEHARDWAREDEVICEMAP" en détectant à
chaque lecture les clés "Identifier" ou "Type"
Je n'arrive pas à écrire cette lecture séquentielle

Quelqu'un aurait-il un exemple de code qui permettrait de lire
séquentiellement toutes les sous-clés appartenant à une racine de clé du
registre ?

Cordialement



Très rapidement :

Chemin est une Chaîne
Chemin = RegistrePremièreSousClé
("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAP")

TANTQUE Chemin <> ""
Info(Chemin)
Chemin = RegistreCléSuivante(Chemin)

//Appeler la fonction RegistreListeValeur() pour obtenir les
différentes valeur des sous clé...
FIN

Cordialement

--
Gilles TOURREAU
Responsable informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Georges Peyre
Bonjour Gilles

Gilles TOURREAU a formulé ce mardi :

Chemin est une Chaîne
Chemin = RegistrePremièreSousClé ("HKEY_LOCAL_MACHINEHARDWAREDEVICEMAP")

TANTQUE Chemin <> ""
Info(Chemin)
Chemin = RegistreCléSuivante(Chemin)

//Appeler la fonction RegistreListeValeur() pour obtenir les différentes
valeur des sous clé...
FIN



Merci pour cet exemple mais j'ai déjà essayé ce code qui ne permet
d'obtenir que les cléq de même niveau.

J'ai enfin trouvé la solution suivante en utilisant la fonction
RegistreCherche de Windev qui est très puissante

Avec le code suivant j'obtiens ce que je veux :

ResLecture est une chaîne
ResSupport est une chaîne
ResIdentite est une chaîne
IndL est un entier
ResExecute est un booléen
ResListe est une chaîne = ""

// on utilise une liste invisible
ListeSupprimeTout(Liste1)
Clé est une chaîne = "HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPScsi"
TANTQUE Clé <> ""
Clé = RegistreCherche(Clé,"Identifier")
SI Clé <> "" ALORS ListeAjoute(Liste1,Clé)
FIN

POUR IndL = 1 A ListeOccurrence(Liste1)
Clé = Liste1[IndL]..ValeurAffichée
// il faut supprimer les <TAB> insérés par la fonction RegistreCherche
Clé = Remplace(Clé,TAB,"")
Clé = Remplace(Clé,"Identifier","")
// On récupère le nom du support physique
ResLecture = RegistreLit(Clé,"Type",ResExecute)
SI ResExecute = Vrai ALORS
ResSupport = ResLecture
SINON
ResSupport = "Support non trouvé"
FIN
// On récupère l'identité du support physique
ResLecture = RegistreLit(Clé,"Identifier",ResExecute)
SI ResExecute = Vrai ALORS
ResIdentite = ResLecture
SINON
ResIdentite = "Identité non trouvée"
FIN
Trace(ResSupport + " : " + ResIdentite)
FIN

Cordialement

--
Elle est pas belle la vie ?