C'est vrai que le dir a ce désagrément ...
je viens de retrouver aujourd'hui un petit exple proche de ce que tu veux faire (enfin je pense ...)
c'est un prog qui liste les rep (en non récursif cette fois, faudra adapter) de C: puis en cochant les cases (c'est un ree view à case), j'update un écran à gauche avec les noms de fichiers contenu dans les rep cochés.
C'est du tout fait sur l'étagère, malheureusement pas commenté, mais bon si ça peut aider.
c'est toujours avec un dir à la base, après chois la méthode que tu préfères. Au dépard, faut double cliquer sur l'icone C:
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
#include <Constants.au3>
#include <GUIConstants.au3>
Opt ( "GUIOnEventMode" , 1 ) ; Change to OnEvent mode $rep = 'C:\'
$commande = 'dir /B /A:D'
$commande_subdir = 'dir /B /A: - D'
$dir = ""
$to_print = ""
$ligne = Run ( @ComSpec & ' /c ' & $commande , $rep , @SW_HIDE , $STDERR_CHILD + $STDOUT_CHILD )
While 1
$dir & = StdoutRead ( $ligne )
If @error Then ExitLoop
Wend
$tab_dir = StringSplit ( $dir , @CRLF , 1 )
If $tab_dir[$tab_dir[0]]="" Then $tab_dir[0] -= 1
Dim $tab_ctrl_item[$tab_dir[0] + 1]
Dim $old_state_item[$tab_dir[0] + 1]
$h_GUI = GUICreate ( "TreeView UDF Sample" , 840 , 510 )
GUISetOnEvent ( $GUI_EVENT_CLOSE , "CLOSEClicked" )
$treeview = GUICtrlCreateTreeView ( 10 , 10 , 400 , 485 , BitOr ( $TVS_CHECKBOXES , $TVS_HASLINES , $TVS_LINESATROOT ) , $WS_EX_CLIENTEDGE )
$root1 = GUICtrlCreateTreeViewItem ( $rep , $treeview )
GUICtrlSetImage ( - 1 , "shell32.dll" , 3 , 4 )
GUICtrlSetImage ( - 1 , "shell32.dll" , 4 , 2 )
GUICtrlSetOnEvent ( - 1 , "sub_dir" )
$tab_ctrl_item[0] = $root1
$old_state_item[0] = BitAND ( GUICtrlRead ( - 1 ) , $GUI_CHECKED )
For $indice = 1 to $tab_dir[0]
$tab_ctrl_item[$indice] = GUICtrlCreateTreeViewItem ( $tab_dir[$indice] , $root1 )
GUICtrlSetOnEvent ( - 1 , "sub_dir" )
$old_state_item[$indice] = BitAND ( GUICtrlRead ( - 1 ) , $GUI_CHECKED )
Next
$view = GUICtrlCreateList ( $to_print , 420 , 10 , 400 , 485 , BitOR ( $LBS_NOSEL , $WS_VSCROLL ) )
GUISetState ( )
While 1
sleep ( 100 )
WEnd
Exit
Func sub_dir ( )
local $item = GUICtrlRead ( $treeview )
local $state = BitAND ( GUICtrlRead ( $item ) , $GUI_CHECKED )
local $ind
local $local_err = 1
For $ind = 0 to $tab_dir[0]
If $tab_ctrl_item[$ind] = $item Then $local_err = 0
ExitLoop
EndIf
Next
If $local_err = 1 Then MsgBox ( 16 , "Erreur" , "Erreur de recouvrement d'indice" )
Return
EndIf
bonne chance
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.