Page 1 sur 1
[R] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 15:31
par GhostLine
Salut tout le monde !
Encore pour une autre boite

je ne m'arrête plus :p
J'ai cherché à savoir la manière de procéder pour détecter le fait qu'un CD ait bien été inséré dans un lecteur cible (pas le fait de vérifier quel CD était dans le lecteur, mais bien de détecter qu'il y un CD dans le lecteur), et rien à faire ... j'ai tenté plusieurs méthodes, sans succès ... une idée ?
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 15:39
par Davyly
Bonjour,
Regarde les fonctions DriveGetDrive("CDROM") et DriveStatus ("path"), je pense que tu y trouveras ton bonheur.
Bon après midi.
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 15:41
par scorp84
Bonjour GhostLine,
Je me suis creusé longtemps sur ce problème et j'ai pas encore trouvé de solution

et ce même avec "DriveGetDrive("CDROM")" et "DriveStatus ("path")" que proposes Davyly.
Si tu trouves, je suis preneur
Amicalement.
BM
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 15:43
par Serge63
Bonjour
est-ce que tu as essayé avec DriveStatus ?
oups...trop tard...
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 15:45
par scorp84
Serge63 : J'avais édité le message entre temps
Amicalement.
BM
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 15:48
par scorp84
Voici le bout de code que j'avais fait (mais non fonctionnel malheureusement
► Afficher le texte
Code : Tout sélectionner
Dim $lettre[7] = ["","A", "B", "C", "D", "E", "F"]
For $i=1 to 6
$lecteur=$lettre[$i] & ":"
$type=DriveGetType ($lecteur)
If $type=="CDROM" Then
$taille=DirGetSize($lecteur)
$etat=DriveStatus ($lecteur)
MsgBox(0,"taille",$taille)
MsgBox(0,"$etat",$etat)
If ($etat<>"NOTREADY" Or $taille==-1) Then
CDTray($lecteur, "open")
Else
CDTray($lecteur, "close")
EndIf
EndIf
Next
Si d'autres ont mieux ou veulent améliorer le code, faites vous plaisir
Amicalement.
BM
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 15:57
par GhostLine
Testez Drivestatus, et vous verrez ... nan, sérieusement, ça ne fonctionne pas ^^ j'ai tenté une petite boucle if, et pour une raison que j'ignore, si je fais un truc du genre
if drivestatus("f:\") <> "NOTREADY" then
la condition est validée de manière automatique, que le CD soit "plein" ou pas ..
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 16:12
par scorp84
Ouf
J'ai cru que ça venait de moi...
Amicalement.
BM
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 16:23
par Davyly
Je viens d'écrire rapidement ce petit bout de code, uniquement dans le but de tester la présence d'un CD dans le lecteur et cela semble fonctionner ...
Code : Tout sélectionner
$cd = DriveGetDrive("CDROM")
If @error Then
MsgBox(16, "Erreur", "Aucun lecteur de type CDROm présent sur ce poste.")
Exit
EndIf
While 1
For $i = 1 to $cd[0]
If DriveStatus($cd[$i]) = "READY" Then MsgBox(64, "Information", "Un CD est présent dans le lecteur CDROm " & $cd[$i])
Next
Sleep("200")
WEnd
Bonne fin de journée.
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 19:50
par Tlem
Perso, je modifierais le script en remplacent la ligne
Code : Tout sélectionner
If DriveStatus($cd[$i]) = "READY" Then MsgBox(64, "Information", "Un CD est présent dans le lecteur CDROm " & $cd[$i])
par
Code : Tout sélectionner
If DriveStatus($cd[$i]) = "READY" Then
MsgBox(64, "Information", "Un CD est présent dans le lecteur CDROm " & $cd[$i])
Exit
EndIf
Sinon, ca boucle.
J'utilise le même type de code depuis longtemps et il fonctionne sous XP, Vista et Seven.

Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 20:17
par Davyly
Bonsoir,
Tlem a écrit :Sinon, ca boucle.

Effectivement, ca boucle mais comme je le disais, c'était uniquement pour tester la présence d'un CD. La boucle était là pour que GhostLine mette un CD, éjecte le CD, le remette pour qu'il vérifie le fonctionnement du script. A partir de là, tout est permis, l'appel d'une fonction, vérification par exemple, etc etc ... Enfin suivant ses besoins. A lui d'adapter maintenant.
Bonne soirée.
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : ven. 26 mars 2010 21:36
par Tlem
Effectivement.
Dans ce cas voici un code légèrement plus complet (mais c'est seulement pour la forme

).
► Afficher le texte
Code : Tout sélectionner
HotKeySet("{ESC}", "Quitter")
$CDFlag = 0
$CD = DriveGetDrive("CDROM")
If @error Then
MsgBox(16, "Erreur", "Aucun lecteur de type CDROm présent sur ce poste.")
Exit
EndIf
While 1
For $i = 1 to $CD[0]
If DriveStatus($CD[$i]) = "READY" And $CDFlag = 0 Then
$CDFlag = 1
TrayTip("Information", "Média optique détecté dans le lecteur " & StringUpper($CD[$i]), 1)
Sleep(3000)
TrayTip("", "", 1)
ElseIf DriveStatus($cd[$i]) <> "READY" And $CDFlag = 1 Then
$CDFlag = 0
TrayTip("Information", "Média optique éjecté du lecteur " & StringUpper($CD[$i]), 1)
Sleep(3000)
TrayTip("", "", 1)
Else
Sleep("300")
EndIf
Next
WEnd
Func Quitter()
Exit
EndFunc
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : dim. 28 mars 2010 13:58
par Davyly
Bonjour,
Whaou,

tu t'es fait plaisir là.
C'est complet rien à dire ... tu vas bien au dela du simple test
Bon après midi.
Re: [..] Condition à remplir : le lecteur CD contient un média
Posté : dim. 28 mars 2010 16:19
par Tlem
Ouais, mais c'est quand même vous qui avez donné la solution en premier.
Après le reste, c'est pour faire joli ...
Re: [R] Condition à remplir : le lecteur CD contient un média
Posté : lun. 29 mars 2010 14:34
par GhostLine
Merci à tous pour vos réponses, je vais tester ça, mais y'a pas de raisons que ca ne fonctionne pas
