Page 1 sur 1
[R] Detection Externes
Posté : mar. 17 juin 2014 10:36
par toma76
Bonjour a tous,
Me revoila pour vous jouer un mauvais tour,
j'aurai besoin de conseil pour un code
► Afficher le texte
If _RemoveMediaDetect() Then
MsgBox(0, "", "Disque(s) amovible(s) détecté(s)")
EndIf
Func _RemoveMediaDetect()
$var = DriveGetDrive( "REMOVABLE" )
If NOT @error Then
For $i = 1 to $var[0]
MsgBox(4096,"Périphériques Externes " & $i, $var[$i])
Next
EndIf
EndFunc
Voici un code que j'ai fait pour detecter les peripheriques externes de l'ordinateur, mais voila petit hic il ne me detecte que les clés USB alors que je veux qu'il me detecte aussi les disques durs externes
comment faire ?
merci d'avance
PS: a votre avis serait t'il possible d'integrer un nom genre $Perif_Ext ??? si oui comment
cordialement
Thomas
"On apprend en faisant des erreurs"
Re: [..]Detection Externes
Posté : mar. 17 juin 2014 11:55
par TommyDDR
Il me semble que les disque dur externe vont dans la catégorie "FIXED" et non "REMOVABLE". (À vérifier)
Re: [..]Detection Externes
Posté : mar. 17 juin 2014 12:21
par toma76
Exact
Et pour mon nom a tu une idee ?
Re: [..]Detection Externes
Posté : mar. 17 juin 2014 14:03
par TommyDDR
Je n'ai pas bien saisi votre demande sur ce point, un nom dans quel but ?
Re: [..]Detection Externes
Posté : mar. 17 juin 2014 15:48
par toma76
car enfaite j'aimerai qu'il me recupere le nom des perif( sa c ok) et qu'il me mettent sa dans une msgbox, mais pour le moment il me mets 1 msgbox par perif ( ex 3 perif = 3 msgbox)
Re: [..]Detection Externes
Posté : mar. 17 juin 2014 16:41
par toma76
J'ai aussi un autre problème
est -il possible de recuperer les resultats trouver afin de les mettre dans une GUI avec des checkbox ?
Re: [..]Detection Externes
Posté : mar. 17 juin 2014 16:50
par PandiPanda
Bonjour,
pour les msgbox()
ceci?
► Afficher le texte
Code : Tout sélectionner
If _RemoveMediaDetect() Then
MsgBox(0, "", "Disque(s) amovible(s) détecté(s)")
EndIf
Func _RemoveMediaDetect()
$var = DriveGetDrive( "REMOVABLE" )
If NOT @error Then
Local $s = ""
For $i = 1 to $var[0]
$s&= "Périphériques Externes [" & $i&"] : "&$var[$i]&" > nom = "&DriveGetLabel($var[$i])&@CRLF
Next
MsgBox(4096,"",$s)
EndIf
EndFunc
pour la gui avec les checkbox, est il possible?
Oui
Re: [..] Detection Externes
Posté : mar. 17 juin 2014 23:13
par jguinch
Le problème des disques amovibles, c'est qu'ils sont parfois vus comme des disques fixes (c'est la cas de disques durs USB et certaines clés).
Ce qu'il est possible de faire, c'est de passer par quelques requêtes WMI pour lister uniquement les disques de type USB et en déduire les lettres de lecteurs.
Voici un exemple (je n'ai testé que sur mon PC en Windows 7 x64, si quelqu'un peut tester sous Windows 8/8.1 ?)
► Afficher le texte
Code : Tout sélectionner
Local $sDrives
Local $aUSBDrives = _ListUSBVolumes()
For $i = 1 To $aUSBDrives[0]
$sDrives &= $aUSBDrives[$i] & @TAB & DriveGetLabel($aUSBDrives[$i]) & @CRLF
Next
MsgBox(0, "USB Drives", "Liste des volumes de type USB : " & @CRLF & $sDrives)
; #FUNCTION# ====================================================================================================================
; Name ..........: _ListUSBVolumes
; Description ...: List USB volumes
; Syntax ........: _ListUSBVolumes()
; Parameters ....: None
; Return values .: An array of strings (USB drive letter followed by colon) of drives found.
; The zeroth array element contains the number of drives.
; Author ........: JGUINCH
; ===============================================================================================================================
Func _ListUSBVolumes()
Local $aResult[1]
Local $oDrive, $sDeviceID, $oPartitions, $oPartition, $oLogicalDisks, $oLogicalDisk, $sDriveLetter
Local $oWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\cimv2")
Local $oDiskDrives = $oWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive Where InterfaceType = 'USB'")
For $oDrive In $oDiskDrives
$sDeviceID = StringReplace($oDrive.DeviceID, "\", "\\")
$oPartitions = $oWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & _
$sDeviceID & """} WHERE AssocClass = " & _
"Win32_DiskDriveToDiskPartition")
For $oPartition In $oPartitions
$oLogicalDisks = $oWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _
$oPartition.DeviceID & """} WHERE AssocClass = " & _
"Win32_LogicalDiskToPartition")
For $oLogicalDisk In $oLogicalDisks
$sDriveLetter = $oLogicalDisk.DeviceID
If $sDriveLetter <> "" Then
Redim $aResult[ UBound($aResult) + 1]
$aResult[ UBound($aResult) - 1] = $sDriveLetter
EndIf
Next
Next
Next
$aResult[0] = UBound($aResult) - 1
Return $aResult
EndFunc
Re: [..] Detection Externes
Posté : mer. 18 juin 2014 09:50
par toma76
MERCI INFINIMENT !
Vous m'avez permis d'avancer énormément sur mon Sript, il ne me manque plus que les checkBox a integrer et ce sera bientot pret
Thomas
Re: [..] Detection Externes
Posté : mer. 18 juin 2014 10:26
par jguinch
Merci de passe le sujet en [R] si le problème est résolu.