[V] Aide pour optimisation script lecteurs virtuels

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Verrouillé
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[V] Aide pour optimisation script lecteurs virtuels

#1

Message 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
Modifié en dernier par Boulanza le ven. 15 juil. 2016 00:43, modifié 2 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [ ] Aide pour optimisation script lecteurs virtuels

#2

Message 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.)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Aide pour optimisation script lecteurs virtuels

#3

Message par Boulanza »

Bonjour orax,
Merci infiniment pour votre aide.
Cordialement.
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Aide pour optimisation script lecteurs virtuels

#4

Message 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.
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [ ] Aide pour optimisation script lecteurs virtuels

#5

Message 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
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [ ] Aide pour optimisation script lecteurs virtuels

#6

Message 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)
;~ ;===================================================================
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [ ] Aide pour optimisation script lecteurs virtuels

#7

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [ ] Aide pour optimisation script lecteurs virtuels

#8

Message 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é !!!
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Verrouillé