Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Détecter les péripériques connectés | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: Détecter les péripériques connectés Lun 8 Aoû 2011 - 0:15 | |
| Bonjour, Voici un programme court qui permet de détecter les périphériques connectés sur l'ordinateur. P.S: Assez souvent il y a une erreur que je ne comprend pas très bien... 'Exception Processing Message ... Parameters ...' - Code:
-
dim i
alpha 2 top 2,5 left 2,10 caption 2,"Disques :"
list 1 left 1,5 top 1,25 width 1,100 height 1,150 width 0,118 height 0,217 caption 0,"" item_add 1,"Recherche..." wait 500 for i=65 to 90 if dir_exists(chr$(i)+":\")=1 then item_add 1,chr$(i)+":\" if i=65 then item_delete 1,1 next i
Dernière édition par Nicolas le Mar 9 Aoû 2011 - 1:01, édité 1 fois |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Détecter les péripériques connectés Lun 8 Aoû 2011 - 0:22 | |
| Bravo Nicolas ça marche bien très utile Merci j'adopte | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Détecter les péripériques connectés Lun 8 Aoû 2011 - 10:44 | |
| Oui mais c'est toujours pareil, je me suis cassé les dents plusieurs fois là-dessus, avec cette erreur sur certaines lettres c'est inutilisable dans un programme. (@minifly, ça ne fait pas d'erreur chez toi ???) On peut voir sur quelles lettres ça coince - Code:
-
dim i alpha 2: top 2,5: left 2,50: caption 2,"Disques :" list 1: left 1,50: top 1,25: width 1,80: height 1,150 width 0,160: height 0,420: caption 0,"" item_add 1,"Recherche..." for i=65 to 90 print " "+chr$(i) if dir_exists(chr$(i)+":\")=1 then item_add 1,chr$(i)+":\" if i=65 then item_delete 1,1 next i end mais je ne sais pas pourquoi (l'erreur n'est pas très explicite). Et finalement, même si j'aimerais bien le faire en Panoramic pur, j'appelle un script vbs pour avoir la liste des volumes présents (savoir si tel ou tel périphérique ou clé usb, ou disque externe etc. est branché). Il y a ça, par exemple: - Code:
-
' Liste des volumes montés et actifs avec leur nom dim fm$, vo$, a$, c$, nv, i dim v$(20)
fm$ = "Z:\temp"
EXECUTE_WAIT "Command.com /c fsutil fsinfo drives >" + fm$: ' liste de tous les volumes File_Open_Read 1, fm$ File_ReadLN 1, vo$: File_ReadLn 1, vo$ File_Close 1 nv = 0 FOR i = 12 TO LEN(vo$) STEP 4 c$ = MID$(vo$, i, 2) EXECUTE_WAIT "Command.com /c fsutil fsinfo volumeinfo " + c$ + " >" + fm$ File_Open_Read 1, fm$ FILE_READLN 1, a$ IF LEFT$(a$, 6) <> "Erreur": ' (si volume non actif) nv = nv + 1: v$(nv) = c$ + " " + MID$(a$, 17, LEN(a$)-17+1) END_IF FILE_CLOSE 1 NEXT i FOR i = 1 TO nv: PRINT v$(i): NEXT i: ' juste pour voir le résultat END ça donne bien la liste des volumes montés, mais avec pour chaque lettre examinée apparition brève d'une fenêtre Dos désagréable. Sinon, Klaus a fait une dll qui donne cette liste, il suffit de faire une petite recherche dans le forum. Mais c'est une dll, donc externe à panoramic. Les discussions, c'était là: https://panoramic.1fr1.net/t570-liste-des-volumes-montes-et-actifs?highlight=volumes+mont%E9set surtout là: https://panoramic.1fr1.net/t1211-volumes-montes?highlight=volumes+mont%E9s | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Lun 8 Aoû 2011 - 12:28 | |
| Chez moi, l'erreur se produit seulement pour le B. En faisant comme ceci, cela marche sans erreur : - Code:
-
for i=67 to 90 if dir_exists(chr$(i)+":\")=1 then item_add 1,chr$(i)+":\" next i La raison de l'erreur sur le B est probablement que le B est réservé à un 2° lecteur de disquette, et si il n'y en a pas d'installé sur le système, alors ça plante. Enfin, c'est une hypothèse qui me paraît donner une bonne explication. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Détecter les péripériques connectés Lun 8 Aoû 2011 - 14:40 | |
| Tiens, un revenant, salut jjn4 ! Je suis actuellement sous XP (j'étais sous Vista, mais je suis revenu un matériel en arrière, because crash définitif). Bizarre cette erreur, que je ne m'explique pas, (même en ignorant A et B qui sont réservés) Edit vu que l'affichage dans le List est un peu décalé dans le temps, j'ai mélangé les lettres, alors j'ai fait ceci pour repérer les lettres qui posent un problème: - Code:
-
dim i alpha 2: top 2,5: left 2,10: caption 2,"Disques :"
list 1: left 1,5: top 1,25: width 1,100: height 1,150 for i=67 to 90 message chr$(i) if dir_exists(chr$(i)+":\")=1 then item_add 1,chr$(i)+":\" next i et chez moi ça donne une erreur sur F, H, I, K, sur lesquelles rien n'est monté | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Lun 8 Aoû 2011 - 15:56 | |
| Il n'y a pas cela chez moi, où seul le B pose problème. @JL35 : est-ce que F, H, I et K ne seraient pas des endroits réservés à des lecteurs de CD ou DVD qui ne seraient pas installés ? Je dis ça parce que je sais que tu as une mémoire Z qui est tout à fait inhabituelle, alors pourquoi pas d'autres choses inhabituelles aussi ? Ah oui, salut !!! Mais je ne suis pas un revenant ! C'est que souvent, le site perd mon identité, et il me voit alors comme un simple visiteur inconnu... Et je ne me réidentifie que lorsque j'ai quelque chose à dire. Bon, d'accord, c'est vrai que ces temps-ci, je n'ai pas grand chose à dire ! Il y a des périodes, comme ça... ! | |
| | | 659_minifly
Nombre de messages : 590 Age : 76 Localisation : Valenciennes Nord Date d'inscription : 29/04/2010
| Sujet: Re: Détecter les péripériques connectés Lun 8 Aoû 2011 - 16:23 | |
| Non je n'ai pas de message d'erreur mais: In ne reconnait pas le port Usb ou il y a une souris Usb de branché Mon 2 port il le reconnait j'ai une clé usb de branché il ne reconnait pas le lecteur de DVD rien dedans.
Je suis sous Win 7 | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Détecter les péripériques connectés Lun 8 Aoû 2011 - 16:33 | |
| Content de te revoir en tout cas ! Ben non, je n'ai rien de particulier, à part mon lecteur Z (partie de mémoire réservée en drive, qui sert de volume de manoeuvre) qui n'a rien de mystérieux, ça se faisait couramment en qbasic, et c'est un truc microsoft (Ramdisk), et je ne vois pas du tout à quoi correspondent les lettres défaillantes. Ce serait intéressant de savoir si d'autres on aussi ces erreurs ? ou si je suis l'ovni de service... En fait ce qui est intéressant ce ne sont pas les lettres en soi (je ne vois pas bien à quoi ça peut servir seul), mais les noms des volumes qui sont montés dessus, pour savoir à quoi ça correspond. J'ai un script vbs qui fait ça (et sans erreur !), mais malheureusement ça fait apparaître momentanément une fenêtre noire disgracieuse dont je ne sais pas me débarrasser. Sinon, pour ceux que ça intéresse, on peut lancer le script comme ceci): - Code:
-
DIM fscr$, fvol$, a$ fscr$ = "Z:\Vol.vbs": ' --------- A AJUSTER --------- fvol$ = "Z:\Volumes.txt": ' --------- A AJUSTER --------- DATA "' ----------------------------------------------------------" DATA "' Script donnant les caractéristiques des disques de l'ordinateur" DATA "' ----------------------------------------------------------" DATA "typeD=Array("+CHR$(34)+"Inconnu"+CHR$(34)+","+CHR$(34)+"Amovible"+CHR$(34)+","+CHR$(34)+"Fixe"+CHR$(34)+","+CHR$(34)+"Réseau"+CHR$(34)+","+CHR$(34)+"CD-ROM"+CHR$(34)+","+CHR$(34)+"RAM Disk"+CHR$(34)+")" DATA "Dim net, shell, computer, fso, WMISet,oWinnt" DATA "Set net = Wscript.CreateObject("+CHR$(34)+"WScript.Network"+CHR$(34)+")" DATA "Set shell = WScript.CreateObject("+CHR$(34)+"WScript.Shell"+CHR$(34)+")" DATA "Set fso = WScript.CreateObject("+CHR$(34)+"Scripting.FileSystemObject"+CHR$(34)+")" DATA "" DATA "computer=net.ComputerName" DATA "InfosDisques Computer " DATA "wscript.quit" DATA "" DATA "Sub InfosDisques(computer)" DATA "set WMISet = GetObject("+CHR$(34)+"winmgmts:{impersonationLevel=impersonate}!//"+CHR$(34)+" & Computer).ExecQuery _" DATA " ("+CHR$(34)+"SELECT * FROM Win32_LogicalDisk"+CHR$(34)+")" DATA "Message="+CHR$(34)+""+CHR$(34)+"" DATA "Mega=1048576" DATA "For each Disk in WMISet" DATA " Capa=Disk.Size" DATA " Desc=TypeD(Disk.DriveType-1)" DATA " If Capa<>"+CHR$(34)+""+CHR$(34)+" Then" DATA " Name=Disk.VolumeName" DATA " Serial=Disk.VolumeSerialNumber" DATA " TT=int(cdbl(Capa)/mega)" DATA " TL=int(cdbl(Disk.FreeSpace)/mega)" DATA " Syst=Disk.FileSystem" DATA " If TT>0 Then" DATA " pc=int(TL*100/TT)" DATA " Else" DATA " pc="+CHR$(34)+""+CHR$(34)+"" DATA " End If" DATA " Else" DATA " Name="+CHR$(34)+""+CHR$(34)+"" DATA " Serial="+CHR$(34)+""+CHR$(34)+"" DATA " TT="+CHR$(34)+""+CHR$(34)+"" DATA " TL="+CHR$(34)+""+CHR$(34)+"" DATA " Syst="+CHR$(34)+"non prêt"+CHR$(34)+"" DATA " pc="+CHR$(34)+""+CHR$(34)+"" DATA " End If" DATA " Message=Message & Disk.Name & "+CHR$(34)+" "+CHR$(34)+" & FormatStrL(name,11)" DATA " Message=Message & VBCRLF " DATA "Next" DATA "wscript.echo Message" DATA "End Sub" DATA "" DATA "Function FormatStrL(ch,lmax)" DATA "l=len(ch)" DATA "If l<lmax Then " DATA " For k = l+1 To lmax" DATA " ch=ch & "+CHR$(34)+" "+CHR$(34)+"" DATA " Next" DATA "End If" DATA "FormatStrL=ch" DATA "End Function" DATA "f" FILE_OPEN_WRITE 1, fscr$ READ a$ WHILE a$ <> "f": FILE_WRITELN 1, a$: READ a$: END_WHILE FILE_CLOSE 1 EXECUTE_WAIT "Cmd.exe /c " + fscr$ + " >" + fvol$ LIST 1: WIDTH 1, 200: HEIGHT 1, 300 FILE_LOAD 1, fvol$ END on peut supprimer ces deux fichiers après usage... Comme on le voit, avec ce script on peut obtenir en plus du nom du volume son numéro de série, sa capacité totale, le volume occupé, le pourcentage occupé, et le système de formatage du disque. Edit 21h50 rectifié, il manquait le Cmd.exe /c dans l'Execute_Wait... @minifly pour toi tout semble normal. C'est normal qu'il ne reconnaisse pas la souris, ni l'imprimante, comme volumes, ni le lecteur de dvd s'il ne contient pas de disque.
Dernière édition par JL35 le Lun 8 Aoû 2011 - 21:50, édité 3 fois | |
| | | Invité Invité
| Sujet: Re: Détecter les péripériques connectés Lun 8 Aoû 2011 - 16:39 | |
| Comme jjn4 si je commence par le lecteur C:\ je n'ai plus d'erreur. Et je n'ai pas de deuxième lecteur de disquettes. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Détecter les péripériques connectés Lun 8 Aoû 2011 - 16:43 | |
| Alors il n'y a que moi ? c'est peut-être XP ? Dans l'explorateur Windows, mes F, H, I, K sont bien donnés comme 'Disques amovibles' , plus exactement 'Périphériques utilisant des supports amovibles', sans rien monté dessus.
Finalement, je crois bien que ça correspond à mon lecteur de cartes mémoires intégré, une lettre par type de lecteur: compact flash, SD card, etc parceque j'ai une comptact-flash montée sur G: et là il ne fait pas d'erreur, seulement s'il n'y a rien de monté dessus. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Lun 8 Aoû 2011 - 20:12 | |
| Oui, quelque chose comme ça. En tout cas, ce n'est pas dû à XP, je suis sur XP aussi. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Détecter les péripériques connectés Lun 8 Aoû 2011 - 20:24 | |
| Je vais passer prochainement à Seven, mon pc de secours a des faiblesses, on verra bien. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Détecter les péripériques connectés Mar 9 Aoû 2011 - 10:14 | |
| Cool JL35, en plus c'est vrai que plutôt que de passer par des DLL quand on ne trouve pas dans panoramic, le fait de passer par un VBS est bien pratique et reste totallement paramètrable et "ouvert" pour quand l'on donne nos sources.
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Détecter les péripériques connectés Mar 9 Aoû 2011 - 15:14 | |
| C'est vrai que c'est plus souple, gros avantage tout est compris dans le module, et on peut modifier à sa guise.
L'inconvénient, même si ce n'est pas bloquant, ce n'est pas complètement transparent comme une dll, avec l'apparition fugitive de cette satanée fenêtre noire d'exécution du cmd.exe. Et sans le cmd ça ne marche pas, dommage. Alors qu'on peut exécuter un script .vbs directement depuis la ligne de commande de Windows. | |
| | | Invité Invité
| Sujet: Re: Détecter les péripériques connectés Mar 9 Aoû 2011 - 18:22 | |
| Ah! JL35 J'ai fais un essai, et pour ne pas tout recopier le code, j'ai repris depuis le disque le script, et simplement remplacé cmd.exe, par: - Code:
-
EXECUTE_WAIT "wscript.exe " + "C:\temp\vol.vbs" |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Détecter les péripériques connectés Mar 9 Aoû 2011 - 18:33 | |
| pas le temps de regarder, je dois partir, mais tu m'intéresses !!! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Détecter les péripériques connectés Mer 10 Aoû 2011 - 0:21 | |
| Je viens d'essayer en vitesse, pas mal cosmos le coup du wscript.exe pour exécuter le script, plus de fenêtre noire à l'écran, c'est quand même plus esthétique. Mais il affiche le résultat à l'écran et non plus dans le fichier, donc pas exploitable par programme. Il faut que je farfouille dans mes archives pour trouver comment faire écrire le résultat par le script dans le fichier de sortie, il me semble avoir ça quelque part (je suis un peu néophyte dans le vbs).
A suivre... | |
| | | Invité Invité
| Sujet: Re: Détecter les péripériques connectés Mer 10 Aoû 2011 - 4:55 | |
| |
| | | Contenu sponsorisé
| Sujet: Re: Détecter les péripériques connectés | |
| |
| | | | Détecter les péripériques connectés | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |