Page 1 sur 1
[..] Détecter lecteur DVD ou Graveur
Posté : dim. 11 janv. 2009 18:50
par eln
Bonjour à tous.
Après un peu de désertion me voilà lancer dans un nouveau projet et donc je me posais la question si il était possible de détecter la présence d'un lecteur DVD où graveur CD. Ceci afin de permettre l'installation où non du logiciel qui va bien.
Merci.
Re: [..] Détecter lecteur DVD ou Graveur
Posté : dim. 11 janv. 2009 22:36
par SurPriseS
Re: [..] Détecter lecteur DVD ou Graveur
Posté : dim. 11 janv. 2009 22:44
par eln
Success: Returns the type of drive: "Unknown", "Removable", "Fixed", "Network", "CDROM", "RAMDisk"
Et on vois ou que c'est un graveur ou un lecteur de DVD ?
Re: [..] Détecter lecteur DVD ou Graveur
Posté : dim. 11 janv. 2009 23:00
par SurPriseS
Ah, tu veux savoir spécifiquement si c'est un lecteur DVD ou un graveur CD ?
La valeur CDROM, te donne tout les lecteurs optique (lecteur cd/dvd, graveur cd/dvd, ...), pas sur qu'on puisse savoir si c'est un graveur ou non :\ Windows considère de la même façon les 2 a ma connaissance :\
Re: [..] Détecter lecteur DVD ou Graveur
Posté : dim. 11 janv. 2009 23:05
par eln
SurPriseS a écrit :Ah, tu veux savoir spécifiquement si c'est un lecteur DVD ou un graveur CD ?
La valeur CDROM, te donne tout les lecteurs optique (lecteur cd/dvd, graveur cd/dvd, ...)
Ok je suis d'accord mais cela ne me dis pas ce que c'est.
Re: [..] Détecter lecteur DVD ou Graveur
Posté : dim. 11 janv. 2009 23:15
par SurPriseS
J'ai édité entre temps ^^
Re: [..] Détecter lecteur DVD ou Graveur
Posté : dim. 11 janv. 2009 23:32
par eln
SurPriseS a écrit :J'ai édité entre temps ^^
Désolé

Re: [..] Détecter lecteur DVD ou Graveur
Posté : lun. 12 janv. 2009 02:21
par Tlem
Avec ceci, ca devrait faire l'affaire

:
Code : Tout sélectionner
; ----------------------------------------------------------------------------
;
; AutoIt Version: 3.1.1.127
; Author: Rick
;
; Script Function:
; To find Drive letter of CD-RW Drive, (For Win95 upwards)
;
; Result = "CD-RW Drive letter" or "" for no CD-RW drive
;
; ----------------------------------------------------------------------------
MsgBox(0,"My CDRW Drive is:", _CDR() )
Func _CDR()
$Drive=""
if @OSTYPE = "WIN32_NT" then
$VolReg=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CD Burning", "CD Recorder Drive")
if not @error then
$MD="HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices"
$Volume="\?" & StringMid($VolReg,3,StringLen($VolReg)-3)
$VolReg=RegRead($MD,$Volume)
For $i = 1 to 50
$var = RegEnumVal($MD, $i)
if @error <> 0 Then ExitLoop
if Regread($MD,$var) = $VolReg AND Stringleft($var,4) = "\Dos" then $Drive = StringRight($var,2)
next
endif
else
$Regl="HKEY_LOCAL_MACHINE\Enum\SCSI\"
$All= DriveGetDrive("All")
For $i= 1 to $All[0]
$var = RegEnumKey($Regl, $i)
If @error <> 0 then ExitLoop
$CDLine=$Regl & $var & "\" & RegEnumKey($Regl & $var,1)
if RegRead( $CDLine,"Class") = "CDROM" AND Stringinstr(StringReplace($var,"ROM",""),"-R") > 0 then $Drive=RegRead( $CDLine,"CurrentDriveLetterAssignment") & ":"
Next
endif
Return $Drive
Endfunc
Re: [..] Détecter lecteur DVD ou Graveur
Posté : lun. 12 janv. 2009 19:05
par eln
Tlem a écrit :Avec ceci, ca devrait faire l'affaire
Merci Tlem, je n'ai pas encore eu l'occasion de tester.
Et pour le lecteur DVD tu as quelque chose ?

Re: [..] Détecter lecteur DVD ou Graveur
Posté : lun. 12 janv. 2009 20:24
par Tlem
Éventuellement, scannez les clés de :
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi à la recherche du terme DVD ...
Sinon, peut être avec le WMI.

Re: [..] Détecter lecteur DVD ou Graveur
Posté : lun. 12 janv. 2009 21:06
par eln
OK, merci. Il n'existe pas un petit freeware que l'on pourrait exploiter avec autoit ?
Re: [..] Détecter lecteur DVD ou Graveur
Posté : lun. 12 janv. 2009 21:23
par Tlem
Re: [..] Détecter lecteur DVD ou Graveur
Posté : lun. 12 janv. 2009 23:00
par moutelous
Bonjour,
Avec WMI ....à adapter en fonction de ses besoins ....(toutes les infos ne sont pas nécessaires)
► Afficher le texte
Code : Tout sélectionner
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"
$Output=""
$Output &= "Computer: " & $strComputer & @CRLF
$Output &= "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_CDROMDrive", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$Output &= "Availability: " & $objItem.Availability & @CRLF
$strCapabilities = $objItem.Capabilities(0)
$Output &= "Capabilities: " & $strCapabilities & @CRLF
$strCapabilityDescriptions = $objItem.CapabilityDescriptions(0)
$Output &= "CapabilityDescriptions: " & $strCapabilityDescriptions & @CRLF
$Output &= "Caption: " & $objItem.Caption & @CRLF
$Output &= "CompressionMethod: " & $objItem.CompressionMethod & @CRLF
$Output &= "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
$Output &= "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
$Output &= "CreationClassName: " & $objItem.CreationClassName & @CRLF
$Output &= "DefaultBlockSize: " & $objItem.DefaultBlockSize & @CRLF
$Output &= "Description: " & $objItem.Description & @CRLF
$Output &= "DeviceID: " & $objItem.DeviceID & @CRLF
$Output &= "Drive: " & $objItem.Drive & @CRLF
$Output &= "DriveIntegrity: " & $objItem.DriveIntegrity & @CRLF
$Output &= "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
$Output &= "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
$Output &= "ErrorMethodology: " & $objItem.ErrorMethodology & @CRLF
$Output &= "FileSystemFlags: " & $objItem.FileSystemFlags & @CRLF
$Output &= "FileSystemFlagsEx: " & $objItem.FileSystemFlagsEx & @CRLF
$Output &= "Id: " & $objItem.Id & @CRLF
$Output &= "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
$Output &= "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
$Output &= "Manufacturer: " & $objItem.Manufacturer & @CRLF
$Output &= "MaxBlockSize: " & $objItem.MaxBlockSize & @CRLF
$Output &= "MaximumComponentLength: " & $objItem.MaximumComponentLength & @CRLF
$Output &= "MaxMediaSize: " & $objItem.MaxMediaSize & @CRLF
$Output &= "MediaLoaded: " & $objItem.MediaLoaded & @CRLF
$Output &= "MediaType: " & $objItem.MediaType & @CRLF
$Output &= "MfrAssignedRevisionLevel: " & $objItem.MfrAssignedRevisionLevel & @CRLF
$Output &= "MinBlockSize: " & $objItem.MinBlockSize & @CRLF
$Output &= "Name: " & $objItem.Name & @CRLF
$Output &= "NeedsCleaning: " & $objItem.NeedsCleaning & @CRLF
$Output &= "NumberOfMediaSupported: " & $objItem.NumberOfMediaSupported & @CRLF
$Output &= "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
$strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
$Output &= "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
$Output &= "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
$Output &= "RevisionLevel: " & $objItem.RevisionLevel & @CRLF
$Output &= "SCSIBus: " & $objItem.SCSIBus & @CRLF
$Output &= "SCSILogicalUnit: " & $objItem.SCSILogicalUnit & @CRLF
$Output &= "SCSIPort: " & $objItem.SCSIPort & @CRLF
$Output &= "SCSITargetId: " & $objItem.SCSITargetId & @CRLF
$Output &= "Size: " & $objItem.Size & @CRLF
$Output &= "Status: " & $objItem.Status & @CRLF
$Output &= "StatusInfo: " & $objItem.StatusInfo & @CRLF
$Output &= "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
$Output &= "SystemName: " & $objItem.SystemName & @CRLF
$Output &= "TransferRate: " & $objItem.TransferRate & @CRLF
$Output &= "VolumeName: " & $objItem.VolumeName & @CRLF
$Output &= "VolumeSerialNumber: " & $objItem.VolumeSerialNumber & @CRLF
if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
$Output=""
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_CDROMDrive" )
Endif
Func WMIDateStringToDate($dtmDate)
Return (StringMid($dtmDate, 5, 2) & "/" & _
StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
& " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
EndFunc
Sur mon système, "Device ID" et "Name" détermine le type de lecteur "CDROM ou DVD" ... Ce n'est peut être pas le cas pour toutes les Marques de lecteurs ...à tester chez vous.
A+