Page 1 sur 1

[V] Aide pour optimisation script lecteurs virtuels

Posté : ven. 08 juil. 2016 23:35
par Boulanza
Bonsoir,
Pouvez-vous m’aider pour optimiser les scripts ci-joint :
Merci d’avance pour votre aide.
Cordialement.

Code : Tout sélectionner

#RequireAdmin
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>

Func DriveInfo_1L()
Global $aArray,$lecteurVirtuel, $sStatus
Local $aArray = DriveGetDrive("CDROM")
If @error Then
    ; An error occurred when retrieving the drives.
    MsgBox($MB_SYSTEMMODAL, "", "It appears an error occurred.")
Else
    For $i = 1 To $aArray[0]
Local $sStatus = DriveStatus($aArray[$i] & "\")
If $sStatus  <> "READY" Then

if $aArray[$i] = "I:" Then DemonterImageIsoToc1()
if $aArray[$i] = "O:" Then DemonterImageIsoToc1()
if $aArray[$i] = "Q:" Then DemonterImageIsoToc1()
if $aArray[$i] = "R:" Then DemonterImageIsoToc1()
if $aArray[$i] = "S:" Then DemonterImageIsoToc1()
if $aArray[$i] = "T:" Then DemonterImageIsoToc1()
if $aArray[$i] = "U:" Then DemonterImageIsoToc1()
if $aArray[$i] = "V:" Then DemonterImageIsoToc1()
if $aArray[$i] = "W:" Then DemonterImageIsoToc1()
if $aArray[$i] = "X:" Then DemonterImageIsoToc1()
if $aArray[$i] = "Y:" Then DemonterImageIsoToc1()
if $aArray[$i] = "Z:" Then DemonterImageIsoToc1()
;MsgBox(64,"Le lecteur virtoel : O existe",$aArray[$i])
EndIf

Next
	;Alerte013()
EndIf
EndFunc
;===================================================
Func DemonterImageIsoToc1()
For $i = 2 To 1 Step -1
If FileExists(@TempDir&"\StopCopieSoftProtectDVD\UltStc\drivers\IsoCmd.exe") Then
Global $program = @TempDir&"\StopCopieSoftProtectDVD\UltStc\drivers\IsoCmd.exe"

Local  $param1 = "isocmd -eject I:"
ShellExecuteWait($program,$param1,"","",@SW_HIDE)

Local  $param2 = "isocmd -eject O:"
ShellExecuteWait($program,$param2,"","",@SW_HIDE)

Local  $param3 = "isocmd -eject Q:"
ShellExecuteWait($program,$param3,"","",@SW_HIDE)

Local  $param4 = "isocmd -eject R:"
ShellExecuteWait($program,$param4,"","",@SW_HIDE)

Local  $param5 = "isocmd -eject S:"
ShellExecuteWait($program,$param5,"","",@SW_HIDE)

Local  $param6 = "isocmd -eject T:"
ShellExecuteWait($program,$param6,"","",@SW_HIDE)

Local  $param7 = "isocmd -eject U:"
ShellExecuteWait($program,$param7,"","",@SW_HIDE)

Local  $param8 = "isocmd -eject V:"
ShellExecuteWait($program,$param8,"","",@SW_HIDE)

Local  $param9 = "isocmd -eject W:"
ShellExecuteWait($program,$param9,"","",@SW_HIDE)

Local  $param10 = "isocmd -eject X:"
ShellExecuteWait($program,$param10,"","",@SW_HIDE)

Local  $param11 = "isocmd -eject Y:"
ShellExecuteWait($program,$param11,"","",@SW_HIDE)

Local  $param12 = "isocmd -eject Z:"
ShellExecuteWait($program,$param12,"","",@SW_HIDE)

EndIf
Next
;MsgBox(64,"test3","ok")
;~ VerifTotalSpace1()
EndFunc

Re: [ ] Aide pour optimisation script lecteurs virtuels

Posté : sam. 09 juil. 2016 00:13
par orax
#RequireAdmin
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>

Global $aLecteurs[] = ["I:", "O:", "Q:", "R:", "S:", "T:", "U:", "V:", "W:", "X:", "Y:", "Z:"]
Global $program = @TempDir & "\StopCopieSoftProtectDVD\UltStc\drivers\IsoCmd.exe"

Func DriveInfo_1L()
   Local $lecteurVirtuel, $sStatus
   Local $aArray = DriveGetDrive("CDROM")
   If @error Then
      ; An error occurred when retrieving the drives.
      MsgBox($MB_SYSTEMMODAL, "", "It appears an error occurred.")
   Else
      For $i = 1 To $aArray[0]
         $sStatus = DriveStatus($aArray[$i] & "\")
         If $sStatus <> "READY" Then
            For $sLecteur In $aLecteurs
               If $aArray[$i] = $sLecteur Then DemonterImageIsoToc1($sLecteur)
               ContinueLoop 2
            Next
         EndIf
      Next
      ;Alerte013()
   EndIf
EndFunc   ;==>DriveInfo_1L
;===================================================
Func DemonterImageIsoToc1($sLecteur)
;~    For $i = 2 To 1 Step -1 (???)
   If FileExists($program) Then
;~          Global $program = @TempDir & "\StopCopieSoftProtectDVD\UltStc\drivers\IsoCmd.exe" ; une déclaration globale dans une fonction est à éviter
      Local $param = "isocmd -eject " & $sLecteur
      ShellExecuteWait($program, $param, "", "", @SW_HIDE)
   EndIf
;~    Next
   ;MsgBox(64,"test3","ok")
;~ VerifTotalSpace1()
EndFunc   ;==>DemonterImageIsoToc1
(Je n'ai pas vérifié que ça fonctionne.)

Re: [R] Aide pour optimisation script lecteurs virtuels

Posté : mar. 12 juil. 2016 20:23
par Boulanza
Bonjour orax,
Merci infiniment pour votre aide.
Cordialement.

Re: [R] Aide pour optimisation script lecteurs virtuels

Posté : ven. 15 juil. 2016 00:42
par Boulanza
Bonjour,
Je reviens encore une fois vers vous.
Si j'ai un lecteur CDROM qui porte la même lettre que celles des lecteurs virtuels UltraIso :
Global $aLecteurs[] = ["I:", "O:", "Q:", "R:", "S:", "T:", "U:", "V:", "W:", "X:", "Y:", "Z:"]
Dons ce cas je vais être bloquer, d'ou rien ne marchera.
Avez-vous une solution (condition) à ce problème.
Merci pour votre collaboration.
Cordialement.

Re: [ ] Aide pour optimisation script lecteurs virtuels

Posté : ven. 15 juil. 2016 09:58
par GhostLine
Sans trop me pencher sur le code, si tu utilises la fonction DriveGetType (par exemple), tu devrais pouvoir établir une condition avant d'attribuer une lettre à ton lecteur virtuel :

$lettre_lecteur = "D"
If DriveGetType ($lettre_lecteur) = "" Then ; d'après l'aide, la valeur retournée est "" si la commande est en erreur
msgbox(0,"","Il n'y a pas de périphérique associé à "&$lettre_lecteur&":")
endif

Re: [ ] Aide pour optimisation script lecteurs virtuels

Posté : jeu. 28 juil. 2016 16:34
par Boulanza
Bonjour,
Pouvez-vous m'aider s'il vous plaît à modifier le code ci-joint pour ne sortir que la dernière lettre du lecteur "CDROM" disponible. Cette lettre = lettre du lecteur virtuel disponible.
Merci d’avance pour votre aide.
;==================================================
   Global $sDrive, $sDriveList, $aDrive, $aUsedDrives,$LecteurDisponible1,$LecteurDisponible2,$szReserved, $iWay
   Global $LecteurDisponible1 = _GetFreeDrive("AB", 1)
   Global $LecteurDisponible2= _GetFreeDrive("AB")
;==========================
Func _GetFreeDrive($szReserved = "", $iWay = 0)

    If $iWay = 1 Then ; First drive's letter
        $sDriveList =  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    Else ; Last drive's letter
        $sDriveList = "ZYXWVUTSRQPONMLKJIHGFEDCBA"
    EndIf

    ; Create an array of drives's letters
    $aDrive = StringSplit($sDriveList, "")

    ; Get all Drives used by system
    $aUsedDrives = DriveGetDrive("CDROM")
    ; Convert result in string of letters only
    For $i = 1 To UBound($aUsedDrives) - 1
        $sDrive = $sDrive & StringTrimRight($aUsedDrives[$i], 1)

   MsgBox(64, "_GetFreeDrive1", "Les lettres des disque fixe et lecteurs CDROM disponible : " & $sDrive & @TAB)

   Next

;~     ; Reverse Check of last unused drive letter
    For $i = 1 To UBound($aDrive) - 1
        If Not StringInStr($sDrive & $szReserved, $aDrive[$i]) Then

        Return $aDrive[$i]
        EndIf
    Next
    ; If we are here, all the drive's lettres are used !!!
   ;  MsgBox(64, "_GetFreeDrive1", "Les lettres des disque fixe et lecteurs CDROM disponible : " & $sDrive & @TAB)
   Return SetError(1, 0, "")
EndFunc   ;==>_GetFreeDrive

  MsgBox(64, "_GetFreeDrive", "Dernière lettre de lecteur disponible : " & $LecteurDisponible2 & @TAB)
  MsgBox(64, "_GetFreeDrive", "Première lettre de lecteur disponible : " & $LecteurDisponible1 & @TAB)
;~ ;===================================================================

Re: [ ] Aide pour optimisation script lecteurs virtuels

Posté : jeu. 28 juil. 2016 22:59
par Boulanza
Bonsoir,
Avec le code ci-dessous on peut détecter la présence d'un lecteur DVD où graveur CD. Mais je n'ai pas pu le modifier pour détecter les lecteurs virtuels installés sur mon PC. Pourriez-vous m'aider?
Cordialement.
;Détecter la présence d'un lecteur DVD où graveur CD.
$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)
Global $Output,
If IsObj($colItems) then
   For $objItem In $colItems

      $Output &= "Drive: " & $objItem.Drive & @CRLF
       Msgbox(0,"WMI Output", $objItem.Drive )
     $Output &= "Manufacturer: " & $objItem.Manufacturer & @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

Re: [ ] Aide pour optimisation script lecteurs virtuels

Posté : jeu. 28 juil. 2016 23:26
par Tlem
Bonsoir Boulanza. Je vois que finalement, vous avez retrouvé votre mot de passe ...

Concernant votre problème, il faudrait savoir comment sont reconnu par le système vos lecteurs virtuel et par quel soft ils sont monté.
Un lecteur pour CD/DVD virtuel n'est pas disponible en écriture (tout comme certains lecteurs réseau ou spéciaux) mais devrait être reconnu comme un lecteur CDRom.

Au delà de ça, quelque chose me dérange dans le code de votre premier message :
;===================================================
Func DemonterImageIsoToc1()
For $i = 2 To 1 Step -1
If FileExists(@TempDir&"\StopCopieSoftProtectDVD\UltStc\drivers\IsoCmd.exe") Then
Global $program = @TempDir&"\StopCopieSoftProtectDVD\UltStc\drivers\IsoCmd.exe"
Comme vous le savez déjà, ce site n'est pas là pour encourager ou aider en quoi que ce soit le piratage sous quelque forme que ce soit.
Ce sujet est donc comme il se doit verrouillé !!!