Page 1 sur 1
Problème de tiroir ...
Publié : dim. 08/mai/2005 17:11
par Simon
J'ai un petit problème de détection des péripheriques notement du lecteur CD (afin de sortir le tiroir du lecteur ...).
Es ce qu'il y a quequ'un pour m'aider svp ?
Merci
Publié : dim. 08/mai/2005 19:18
par Le Soldat Inconnu
Regarde sur 2DEV (voir ma signature)
tu y trouvera un exemple permettant de lister tous les lecteurs ou certain lecteur suivant un filtre
EDIT : zut, je le trouve pas, va falloir que je l'ajoute

ou alors je suis bigleu
bon, vl'a le code
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
;
; Explication du programme :
; Récupérer la lettre et le type (disquette, disque dur, etc...) de tous les lecteurs présents sur l'ordinateur.
Structure DriveInfos
DriveLetter.s
DriveType.l
DriveTypeString.s
NameOfVolume.s
EndStructure
NewList DriveList.DriveInfos()
Procedure GetDrive(ListDriveType.l)
Protected Drive.s, DriveLetter.s, DriveType.l, Start.l, LengthDrive.l, DriveTypeString.s
#REMOVABLE_DRIVE = 1
#FIXED_DRIVE = 2
#REMOTE_DRIVE = 4
#CDROM_DRIVE = 8
#RAMDISK_DRIVE = 16
#UNKNOWN_DRIVE = 32
#ALL_DRIVE = 63
; On vide la liste
ClearList(DriveList())
; On récupère la lettre des différents lecteurs présent sur l'ordinateur
Drive = Space(255)
LengthDrive = GetLogicalDriveStrings_(255, @Drive)
For Start = 0 To LengthDrive - 4 Step 4
DriveLetter.s = PeekS(@Drive + Start, 3) ; on récupère une lettre
DriveType.l = GetDriveType_(@DriveLetter) ; on récupère le type du lecteur
Select DriveType ; On donne un nom au type de lecteur
Case #DRIVE_REMOVABLE : DriveType = #REMOVABLE_DRIVE : DriveTypeString.s = "Disquette"
Case #DRIVE_FIXED : DriveType = #FIXED_DRIVE : DriveTypeString.s = "Disque dur"
Case #DRIVE_REMOTE : DriveType = #REMOTE_DRIVE : DriveTypeString.s = "Lecteur réseau"
Case #DRIVE_CDROM : DriveType = #CDROM_DRIVE : DriveTypeString.s = "CD-ROM"
Case #DRIVE_RAMDISK : DriveType = #RAMDISK_DRIVE : DriveTypeString.s = "RamDisk"
Case #DRIVE_UNKNOWN : DriveType = #UNKNOWN_DRIVE : DriveTypeString.s = ""
EndSelect
If DriveType & ListDriveType ; on regarde si le type du lecteur correspond à ceux demandés
AddElement(DriveList())
DriveList()\DriveLetter = RemoveString(DriveLetter, "\")
DriveList()\DriveType = DriveType
DriveList()\DriveTypeString = DriveTypeString
If DriveLetter <> "A:\" And DriveLetter <> "B:\"
DriveList()\NameOfVolume = Space(255)
GetVolumeInformation_(@DriveLetter, @DriveList()\NameOfVolume, 255, 0, 0, 0, 0, 0)
DriveList()\NameOfVolume = Trim(DriveList()\NameOfVolume)
Else
DriveList()\NameOfVolume = ""
EndIf
EndIf
Next
EndProcedure
;- Debut du test
GetDrive(#REMOVABLE_DRIVE | #CDROM_DRIVE | #FIXED_DRIVE)
ResetList(DriveList())
While NextElement(DriveList())
Debug DriveList()\DriveLetter + " " + DriveList()\DriveTypeString + " " + DriveList()\NameOfVolume
Wend
Publié : lun. 09/mai/2005 20:09
par Simon
Merci "Le Soldat Inconnu"
T'as réponce est un honneur pour moi
car j'ai regarder les trucs que tu fait sur le net ...

chapeau !
Merci pour ton code mais il y a juste un mini problème: j'ai la version complète le PB 3.93 et je n'arrive pas à compiler ton code sans le débuggeur . Es-ce normal ????????
Voilla meric a toi . ++
Publié : lun. 09/mai/2005 22:32
par Le Soldat Inconnu
chez moi, ça marche très bien :
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 3.90
;
; Explication du programme :
; Récupérer la lettre et le type (disquette, disque dur, etc...) de tous les lecteurs présents sur l'ordinateur.
Structure DriveInfos
DriveLetter.s
DriveType.l
DriveTypeString.s
NameOfVolume.s
EndStructure
NewList DriveList.DriveInfos()
Procedure GetDrive(ListDriveType.l)
Protected Drive.s, DriveLetter.s, DriveType.l, Start.l, LengthDrive.l, DriveTypeString.s
#REMOVABLE_DRIVE = 1
#FIXED_DRIVE = 2
#REMOTE_DRIVE = 4
#CDROM_DRIVE = 8
#RAMDISK_DRIVE = 16
#UNKNOWN_DRIVE = 32
#ALL_DRIVE = 63
; On vide la liste
ClearList(DriveList())
; On récupère la lettre des différents lecteurs présent sur l'ordinateur
Drive = Space(255)
LengthDrive = GetLogicalDriveStrings_(255, @Drive)
For Start = 0 To LengthDrive - 4 Step 4
DriveLetter.s = PeekS(@Drive + Start, 3) ; on récupère une lettre
DriveType.l = GetDriveType_(@DriveLetter) ; on récupère le type du lecteur
Select DriveType ; On donne un nom au type de lecteur
Case #DRIVE_REMOVABLE : DriveType = #REMOVABLE_DRIVE : DriveTypeString.s = "Disquette"
Case #DRIVE_FIXED : DriveType = #FIXED_DRIVE : DriveTypeString.s = "Disque dur"
Case #DRIVE_REMOTE : DriveType = #REMOTE_DRIVE : DriveTypeString.s = "Lecteur réseau"
Case #DRIVE_CDROM : DriveType = #CDROM_DRIVE : DriveTypeString.s = "CD-ROM"
Case #DRIVE_RAMDISK : DriveType = #RAMDISK_DRIVE : DriveTypeString.s = "RamDisk"
Case #DRIVE_UNKNOWN : DriveType = #UNKNOWN_DRIVE : DriveTypeString.s = ""
EndSelect
If DriveType & ListDriveType ; on regarde si le type du lecteur correspond à ceux demandés
AddElement(DriveList())
DriveList()\DriveLetter = RemoveString(DriveLetter, "\")
DriveList()\DriveType = DriveType
DriveList()\DriveTypeString = DriveTypeString
If DriveLetter <> "A:\" And DriveLetter <> "B:\"
DriveList()\NameOfVolume = Space(255)
GetVolumeInformation_(@DriveLetter, @DriveList()\NameOfVolume, 255, 0, 0, 0, 0, 0)
DriveList()\NameOfVolume = Trim(DriveList()\NameOfVolume)
Else
DriveList()\NameOfVolume = ""
EndIf
EndIf
Next
EndProcedure
;- Debut du test
GetDrive(#REMOVABLE_DRIVE | #CDROM_DRIVE | #FIXED_DRIVE)
Txt.s
ResetList(DriveList())
While NextElement(DriveList())
Txt + DriveList()\DriveLetter + " " + DriveList()\DriveTypeString + " " + DriveList()\NameOfVolume + Chr(10)
Wend
MessageRequester("Liste des lecteurs", Txt)
Publié : lun. 09/mai/2005 22:51
par Progi1984
Si tu as constamment le debuggeur, c'est que tu as la version démo ! POur ne plus l'avoir, achète le !
Publié : mar. 10/mai/2005 18:21
par Simon
Avec le 2em code cela marche et le problème du premier est qu'il ne marche que quand j'active le debuggeur.... ( car j'ai la version complète !=
Donc si il y a une solution a ce ptit problème ... faite moi le savoir

Publié : mar. 10/mai/2005 18:39
par Le Soldat Inconnu
ben le premier code n'affiche rien si il n'y a pas le debugger

c'est pas ça ton soi disant problème
car le seul changement, c'est que dans le 2ème, j'utilise un messagerequester() à la place du debugger
Publié : mer. 11/mai/2005 17:42
par Simon