Code : Tout sélectionner
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <GUIListView.au3>
#include <File.au3>
#include <Constants.au3>
#include <FileListToArrayEx.au3>
$ini = TimerInit()
$ar_Array = _FileListToArrayEx(FileSelectFolder("Dans quel dossier voulez vous rechercher des fichiers?", ""), Default, 1, Default, True)
Dim $ar_Array2[$ar_Array[0] + 1], $ar_Array3[1]
For $i = 1 To $ar_Array[0]
$Fitchuyana = StringSplit($ar_Array[$i], "\")
$ar_Array2[$i] = $Fitchuyana[$Fitchuyana[0]]
Next
;MsgBox(0,"",TimerDiff($ini))
;_ArrayDisplay($ar_Array, "Liste fichier+Chemin") ; Ceci est facultatif, c'est juste pour afficher la liste des fichiers.
;_ArrayDisplay($ar_Array2, "Liste fichier-Chemin") ; Ceci est facultatif, c'est juste pour afficher la liste des fichiers.
$input = InputBox("Rechercher un fichier", " ")
Global $GUI_MAIN = GUICreate("Fichier(s) trouvé(s)", @DesktopWidth - 200, @DesktopHeight - 200)
Global $ListView1 = GUICtrlCreateListView("Fichier(s) ", 0, 0, @DesktopWidth - 200, @DesktopHeight - 200)
Global $hListView1 = GUICtrlGetHandle($ListView1)
GUISetState()
_GUICtrlListView_SetImageList($ListView1, _GUIImageList_GetSystemImageList(), 1)
For $i = 1 To $ar_Array[0]
If StringInStr($ar_Array2[$i], $input) Then
_GUICtrlListView_AddItem($hListView1, $ar_Array[$i], _GUIImageList_GetFileIconIndex($ar_Array[$i]))
EndIf
Next
While True
Sleep(1)
If GUIGetMsg() = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
Func _GUIImageList_GetSystemImageList()
Local $FileInfo = DllStructCreate('dword hIcon; int iIcon; DWORD dwAttributes; CHAR szDisplayName[255]; CHAR szTypeName[80];')
Local $uFlags = BitOR(0x10, 0x4000, 0x1)
Local $hImageList = _WinAPI_SHGetFileInfo(".txt", _
0x80, _
DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), _
$uFlags)
Return $hImageList
EndFunc ;==>_GUIImageList_GetSystemImageList
Func _GUIImageList_GetFileIconIndex($sFileSpec)
Local $FileInfo = DllStructCreate('dword hIcon; int iIcon; DWORD dwAttributes; CHAR szDisplayName[255]; CHAR szTypeName[80];')
Local $uFlags = BitOR(0x4000, 0x10, 0x1)
Local $hImageList = _WinAPI_SHGetFileInfo($sFileSpec, _
$FILE_ATTRIBUTE_NORMAL, _
DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), _
$uFlags)
Return DllStructGetData($FileInfo, "iIcon")
EndFunc ;==>_GUIImageList_GetFileIconIndex
Func _WinAPI_SHGetFileInfo($pszPath, $dwFileAttributes, $psfi, $cbFileInfo, $uFlags)
Local $return = DllCall("shell32.dll", "DWORD*", "SHGetFileInfo", _
"str", $pszPath, "DWORD", $dwFileAttributes, _
"ptr", $psfi, "UINT", $cbFileInfo, _
"UINT", $uFlags)
If @error Then Return SetError(@error, 0, 0)
Return $return[0]
EndFunc ;==>_WinAPI_SHGetFileInfo