C'est effectivement une solution qui fonctionne.
Il est vrai aussi que je n'avais pas fait attention que le nombre de ChekBox est déterminé au début du script par la fonction
DriveGetDrive et dans ce cas vous pouvez passer par une autre méthode.
Voici comment j'aurais écris le script :
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$var = DriveGetDrive("ALL")
If IsArray($var) Then
$GUI = GuiCreate("Sample GUI", 170, 400)
; BUTTON
$OK = GuiCtrlCreateButton("OK", 10, 10, 50, 30)
Dim $CB[$var[0] + 1]
Dim $h = 75
If Not @error Then
For $i = 1 To $var[0]
$CB[$i] = GUICtrlCreateCheckbox($var[$i] & " <- CheckBox" & $i, 25, $h, 200, 20)
$h = $h + 20
Next
EndIf
GUISetState(@SW_SHOW)
Else
MsgBox(64, "Stop", "Aucun lecteur réseau trouvé ")
Exit
EndIf
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $OK
OK()
EndSwitch
WEnd
Func OK()
Switch MsgBox(36, "Alerte...", "Voulez-vous vraiment supprimer les lecteurs cochés ?")
Case 6 ;oui
Local $CBC
For $i = 1 to $Var[0]
If BitAND(GUICtrlRead($CB[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
$CBC &= "$ChkBox" & $i & @CRLF
EndIf
Next
MsgBox(0, "", "Nb de checkbox : " & $var[0] & @CRLF & "Liste des checkbox cochées : " & @CRLF & $CBC)
;DriveMapDel("X:")
Case 7 ;Non
Exit
EndSwitch
EndFunc ;==>OK