J’avais besoin d'afficher dans un listview le contenu d'un dossier et de ces sous dossier mais pas de façon recursive.
jusqu’à maintenant j'ai utilisé cette fonction :
Code : Tout sélectionner
Func _Explorateur_Create($flag = 0, $sFolder = GUICtrlRead($Cmb_Folder), $GuiRead_Lvl = GUICtrlRead($Inp_Lvl), $sMask = GUICtrlRead($Inp_Ext))
Local $Files_Lvl_0, $Folder_Lvl_0, $Folder_Lvl_1, $Folder_Lvl_2, $Folder_Lvl_3, $Folder_Lvl_4
$LIndex = 0
$arr_Listview_ItemPAth = 0
Dim $arr_Listview_ItemPAth[0]
_GUICtrlListView_DeleteAllItems($ListView1)
If Not _IsChecked($Check_Recursive) Then
If $GuiRead_Lvl >= 0 Then
_ListViewAddFiles(_FileListToArrayRec($sFolder, $sMask, 1, 0, 1, 2))
If $GuiRead_Lvl > 0 Then
$Folder_Lvl_1 = _FileListToArrayRec($sFolder, "*", 2, 0, 1, 2)
For $j = 1 To UBound($Folder_Lvl_1) - 1
_ListViewAddFiles(_FileListToArrayRec($Folder_Lvl_1[$j], $sMask, 1, 0, 1, 2))
If $GuiRead_Lvl > 1 Then
$Folder_Lvl_2 = _FileListToArrayRec($Folder_Lvl_1[$j], "*", 2, 0, 1, 2)
For $k = 1 To UBound($Folder_Lvl_2) - 1
_ListViewAddFiles(_FileListToArrayRec($Folder_Lvl_2[$k], $sMask, 1, 0, 1, 2))
If $GuiRead_Lvl > 2 Then
$Folder_Lvl_3 = _FileListToArrayRec($Folder_Lvl_2[$k], "*", 2, 0, 1, 2)
For $L = 1 To UBound($Folder_Lvl_3) - 1
_ListViewAddFiles(_FileListToArrayRec($Folder_Lvl_3[$L], $sMask, 1, 0, 1, 2))
If $GuiRead_Lvl > 3 Then
$Folder_Lvl_4 = _FileListToArrayRec($Folder_Lvl_3[$L], "*", 2, 0, 1, 2)
For $m = 1 To UBound($Folder_Lvl_4) - 1
_ListViewAddFiles(_FileListToArrayRec($Folder_Lvl_4[$m], $sMask, 1, 0, 1, 2))
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
EndIf
ElseIf _IsChecked($Check_Recursive) Then
_ListViewAddFiles(_FileListToArrayRec($sFolder, $sMask, 1, 1, 1, 2))
EndIf
EndFunc
Func _ListViewAddFiles($FileList)
Local $hIcon, $sAtrib, $sDrive = "", $sDir = "", $sFileName = "", $sExtension = ""
For $n = 1 To UBound($FileList) - 1
$File_Name = $FileList[$n]
If StringInStr($File_Name, "_stripped", 2) Then ContinueLoop
_PathSplit($File_Name, $sDrive, $sDir, $sFileName, $sExtension)
$hIcon = _WinAPI_ShellExtractAssociatedIcon($File_Name, 1)
$Index = _GUIImageList_ReplaceIcon($hImage, -1, $hIcon)
_PathSplit($File_Name, $sDrive, $sDir, $sFileName, $sExtension)
_ArrayAdd($arr_Listview_ItemPAth, $File_Name)
_GUICtrlListView_AddItem($ListView1, $sFileName & $sExtension, _GUIImageList_GetImageCount($hImage) - 1)
$LIndex += 1
Next
_WinAPI_DestroyIcon($hIcon)
EndFunc ;==>_ListViewAdd_FilesAndFolder
J’ai essayé différentes façon d’écrire ça mais je n'ai pas encore trouvé, j'espère que vous pourrez m'aider, Merci d'avance


