...oder mittels Sortierung per Spaltenüberschriften und Icons^^
Spoiler anzeigen
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiImageList.au3>
#include <Array.au3>
#include <ListBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
Global $SelDia
Local $aIcons[4] = [0, 3, 6, 9]
Local $iExWindowStyle = BitOR($WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE)
Local $iExListViewStyle = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES, $LVS_EX_GRIDLINES, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER)
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Löschomat", 777, 447, 195, 126)
GUISetFont(8, 800, 0, "MS Sans Serif")
GUISetBkColor(0x878787)
$ListView1 = GUICtrlCreateListView("Dateiname|Größ (KB)|Endung|Pfad", 0, 0, 605, 445, $LBS_EXTENDEDSEL, $iExListViewStyle)
GUICtrlSendMsg(-1, 0x101E, 0, 200)
GUICtrlSendMsg(-1, 0x101E, 1, 80)
GUICtrlSendMsg(-1, 0x101E, 2, 70)
GUICtrlSendMsg(-1, 0x101E, 3, 250)
GUICtrlCreateGroup("Handlungen", 612, 4, 157, 189)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Auswahl löschen", 620, 32, 143, 33)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox1 = GUICtrlCreateCheckbox("Löschanfrage ein/aus", 620, 168, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("Aktuallisieren", 620, 112, 143, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button3 = GUICtrlCreateButton("Ordner aufrufen", 620, 140, 143, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_GUICtrlListView_SetExtendedListViewStyle($ListView1, $iExListViewStyle)
$hImage = _GUIImageList_Create(18, 18, 5, 3)
_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", -5) ;Das sind die Icons für die files
_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", -3)
_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", -5)
_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", -6)
_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", -9)
_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", -10)
_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", -11)
_GUICtrlListView_SetImageList($ListView1, $hImage, 1)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Button3
_DirSelect($ListView1, 0)
Case $Button1
$Read1 = GUICtrlRead($Checkbox1)
If $Read1 = $GUI_CHECKED Then
$Ch = 1
Else
$Ch = 0
EndIf
_Delete($ListView1, $Ch)
Case $Button2
_DirSelect($ListView1, 1)
Case $ListView1
; Kick off the sort callback
_GUICtrlListView_SortItems($ListView1, GUICtrlGetState($ListView1))
EndSwitch
WEnd
_GUICtrlListView_UnRegisterSortCallBack($ListView1)
GUIDelete()
Exit
Func _DirSelect($Handle, $Update)
If $Update = 0 Then
$SelDia = FileSelectFolder("Bitte wählen Sie einen Ordner aus.", "", 4)
EndIf
If Not @error Then
_GUICtrlListView_DeleteAllItems($Handle)
$Search = FileFindFirstFile($SelDia & "\*.*")
$FileCount = DirGetSize($SelDia, 3)
;_arraydisplay($filecount)
For $i = 1 To $FileCount[1] Step 1
$NextFile = FileFindNextFile($Search)
$attribute = FileGetAttrib($SelDia & "\" & $NextFile) ;dateiattribut
If @error Then
MsgBox(4096, "Error", "Konnte die Attribute nicht auslesen.")
Exit
EndIf
If StringInStr($attribute, "D") <> 0 Then ;wenn unterverzeichnis
$split = "<DIR>"
$size = Round(DirGetSize($SelDia & "\" & $NextFile) / 1024) ;größe in kilobyte incl unterverzeichnissen
$filename = $NextFile
$fileicon = 0 ;das erste icon in der iconliste
Else
If StringInStr($NextFile, ".") <> 0 Then ;wenn "." im dateinamen...
$split = StringTrimLeft($NextFile, StringInStr($NextFile, ".", 0, -1)) ;...dann endung ausgeben
$filename = StringTrimRight($NextFile, StringLen($split) + 1)
Else
$split = "" ;...hat keine dateiendung
$filename = $NextFile
EndIf
$fileicon = 1
$size = Round(FileGetSize($SelDia & "\" & $NextFile) / 1024) ;dateigröße
EndIf
_AddRow($ListView1, $filename & "|" & $size & "|" & $split & "|" & $SelDia, $fileicon)
;GUICtrlCreateListViewItem ($filename & "|" & $size & "|" & $Split & "|" & $SelDia, $Handle)
Next
_GUICtrlListView_RegisterSortCallBack($ListView1, True, False)
;_GUICtrlListView_SimpleSort ($Handle, $trueorfalse, _GUICtrlListView_GetColumnCount($listview1))
EndIf
EndFunc ;==>_DirSelect
Func _Delete($Handle, $Checked)
$i1 = _GUICtrlListView_GetSelectedIndices($Handle, True)
$i2 = _GUICtrlListView_GetItem($Handle, $i1[1], 0)
$dateiname = $i2[3]
$i3 = _GUICtrlListView_GetItem($Handle, $i1[1], 3)
$pfad = $i3[3]
$delfile = $pfad & "\" & $dateiname
If $Checked = 1 Then
If MsgBox(4, "Wirklich löschen?", "Soll die folgende Datei wirklich gelöscht werden:" & @CRLF & $delfile) = 6 Then
FileDelete($delfile)
_GUICtrlListView_DeleteItemsSelected($Handle)
EndIf
Else
FileDelete($delfile)
_GUICtrlListView_DeleteItemsSelected($Handle)
EndIf
EndFunc ;==>_Delete
Func _AddRow($hWnd, $sItem, $ifile)
Local $aItem = StringSplit($sItem, "|")
Local $iIndex = _GUICtrlListView_AddItem($hWnd, $aItem[1], $ifile, _GUICtrlListView_GetItemCount($hWnd) + 9999)
For $x = 2 To $aItem[0]
_GUICtrlListView_AddSubItem($hWnd, $iIndex, $aItem[$x], $x - 1)
Next
EndFunc ;==>_AddRow