Ordner in TV auflisten; nach Größe sortiert

  • Hallo ihr Lieben.

    Ich wollte ein kleines Script schreiben das mit alle Ordner auf der Festplatte (oder ab gegebenen Pfad) in einem TreeView gibt, und diese denn nach 'Größe sortiert.

    So sollte es später denn aussehen:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("About", 464, 335, 196, 124)
    $TreeView1 = GUICtrlCreateTreeView(0, 0, 481, 353)
    $TreeView1_0 = GUICtrlCreateTreeViewItem("C:\", $TreeView1)
    $TreeView1_1 = GUICtrlCreateTreeViewItem("Programme 98048MB", $TreeView1_0)
    $TreeView1_2 = GUICtrlCreateTreeViewItem("AutoIt 568MB", $TreeView1_1)
    $TreeView1_3 = GUICtrlCreateTreeViewItem("shell 96MB", $TreeView1_2)
    $TreeView1_4 = GUICtrlCreateTreeViewItem("bin 0.95MB", $TreeView1_2)
    $TreeView1_5 = GUICtrlCreateTreeViewItem("Scite 62.9 MB", $TreeView1_1)
    $TreeView1_6 = GUICtrlCreateTreeViewItem("Mein Ordner 8924MB", $TreeView1_0)
    $TreeView1_7 = GUICtrlCreateTreeViewItem("Windows 5600MB", $TreeView1_0)
    $TreeView1_8 = GUICtrlCreateTreeViewItem("System32 2684MB", $TreeView1_7)
    $TreeView1_9 = GUICtrlCreateTreeViewItem("Driver 56MB", $TreeView1_8)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]

    Also Ok... Ich habe bis jetzt die Ordnersuche , nur weiß ich nicht wie ich das ganze der Größe nach in einem TreeView auflisten soll.

    Hat jemand vielleicht eine Idee ?

    Wäre echt super! Vielen Dank im Vorraus,

    Lenny

    P.S.: Hier ist mein Script, so wie ich es bis jetzt habe:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    $Form1 = GUICreate("About", 464, 335, 196, 124)
    $TreeView1 = GUICtrlCreateTreeView(0, 0, 481, 353)
    $TreeView1_0 = GUICtrlCreateTreeViewItem("C:\", $TreeView1)
    $TreeView1_1 = GUICtrlCreateTreeViewItem("Programme 98048MB", $TreeView1_0)
    $TreeView1_2 = GUICtrlCreateTreeViewItem("AutoIt 568MB", $TreeView1_1)
    $TreeView1_3 = GUICtrlCreateTreeViewItem("shell 96MB", $TreeView1_2)
    $TreeView1_4 = GUICtrlCreateTreeViewItem("bin 0.95MB", $TreeView1_2)
    $TreeView1_5 = GUICtrlCreateTreeViewItem("Scite 62.9 MB", $TreeView1_1)
    $TreeView1_6 = GUICtrlCreateTreeViewItem("Mein Ordner 8924MB", $TreeView1_0)
    $TreeView1_7 = GUICtrlCreateTreeViewItem("Windows 5600MB", $TreeView1_0)
    $TreeView1_8 = GUICtrlCreateTreeViewItem("System32 2684MB", $TreeView1_7)
    $TreeView1_9 = GUICtrlCreateTreeViewItem("Driver 56MB", $TreeView1_8)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    $List = ""
    $I = 0

    [/autoit][autoit][/autoit][autoit]

    Func _SearchDir($Path = "C:\", $FileT = "*")
    $Search = FileFindFirstFile($Path & "*.*")
    While 1
    $File = FileFindNextFile($Search)
    If @error Then Return ($List)
    $FilePath = $Path & $File
    If StringInStr(FileGetAttrib($FilePath), "D") Then
    $List &= $FilePath & " " & Round(DirGetSize($FilePath) / 1024 / 1024, 3) & "MB" & @CRLF
    ToolTip($FilePath, 0, 0, "Current File")
    _SearchDir($FilePath & "\", $FileT)
    EndIf
    WEnd
    FileClose($Search)
    EndFunc ;==>_SearchDir

    [/autoit][autoit][/autoit][autoit]

    ClipPut(_SearchDir())

    [/autoit]

    lG

    Jaja, Moo does the Cow!

  • Hi.

    Das ist schonmal ein guter Anfang, aber leider ist das Ganze nicht nach der Größe Sortiert.

    Wäre Super wenn das noch jemand hinbekommen würde ;)

    Vielen Dank im Voraus,
    Lenny

    Jaja, Moo does the Cow!

  • Hallo!

    Ich verstehe das nicht ganz. Also ich meine, ich möchte das so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("TreeView", 616, 430, 192, 124)
    GUISetBkColor(0xFFFFFF)
    $TreeView1 = GUICtrlCreateTreeView(0, 0, 633, 449)
    $TreeView1_0 = GUICtrlCreateTreeViewItem("C:\", $TreeView1)
    $TreeView1_1 = GUICtrlCreateTreeViewItem("Größter Ordner", $TreeView1_0)
    $TreeView1_2 = GUICtrlCreateTreeViewItem("Größter Ordner", $TreeView1_1)
    $TreeView1_3 = GUICtrlCreateTreeViewItem("Größter Ordner", $TreeView1_2)
    $TreeView1_4 = GUICtrlCreateTreeViewItem("2. Größter Ordner", $TreeView1_2)
    $TreeView1_5 = GUICtrlCreateTreeViewItem("3. Größter Ordner", $TreeView1_2)
    $TreeView1_6 = GUICtrlCreateTreeViewItem("Kleinster Ordner", $TreeView1_2)
    $TreeView1_7 = GUICtrlCreateTreeViewItem("2. Größter Ordner", $TreeView1_1)
    $TreeView1_8 = GUICtrlCreateTreeViewItem("3. Größter Ordner", $TreeView1_1)
    $TreeView1_9 = GUICtrlCreateTreeViewItem("Kleinster Ordner", $TreeView1_1)
    $TreeView1_10 = GUICtrlCreateTreeViewItem("2. Größter Ordner", $TreeView1_0)
    $TreeView1_11 = GUICtrlCreateTreeViewItem("Größter Ordner", $TreeView1_10)
    $TreeView1_12 = GUICtrlCreateTreeViewItem("2. Größter Ordner", $TreeView1_10)
    $TreeView1_13 = GUICtrlCreateTreeViewItem("Kleinster Ordner", $TreeView1_10)
    $TreeView1_14 = GUICtrlCreateTreeViewItem("3. Größter Ordner", $TreeView1_0)
    $TreeView1_15 = GUICtrlCreateTreeViewItem("Größter Ordner", $TreeView1_14)
    $TreeView1_16 = GUICtrlCreateTreeViewItem("Kleinster Ordner", $TreeView1_14)
    $TreeView1_17 = GUICtrlCreateTreeViewItem("Kleinster Ordner", $TreeView1_0)
    $TreeView1_18 = GUICtrlCreateTreeViewItem("Größter Ordner", $TreeView1_17)
    $TreeView1_19 = GUICtrlCreateTreeViewItem("2. Größter Ordner", $TreeView1_17)
    $TreeView1_20 = GUICtrlCreateTreeViewItem("3. Größter Ordner", $TreeView1_17)
    $TreeView1_21 = GUICtrlCreateTreeViewItem("Kleinster Ordner", $TreeView1_17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Vielen Dank im Voraus,

    Lenny

    Jaja, Moo does the Cow!

    • Offizieller Beitrag

    Um mal zu erklären, was ich meine:

    Beispiel (vor der Sortierung):

    Code
    c:\
    |- Programme\ (500 MB)
        '- AutoIt3\ (43 MB)
    |- Windows\ (2100 MB)
    |- Weitere Daten\ (5000 MB)
        '- MP3s\ (2000 MB)

    Beispiel (nach der Sortierung):

    Code
    c:\
    |- Weitere Daten\ (5000 MB)
    |- Windows\ (2100 MB)
    '- MP3s\ (2000 MB)
    '- AutoIt3\ (43 MB)

    Verstehst Du, was ich meine?
    Die eingerückten Verzeichnisse im Treeview werden rausgerissen. Oder Du sortierst nur die Verzeichnisse im Hauptpfad.
    Deshalb mein Hinweis auf die von Dir gewünschte Sortier-Methode.

  • Also ich meine... Es geht nicht so ?

    Vielen Dank im Voraus,

    lG, Lenny

    Jaja, Moo does the Cow!

    • Offizieller Beitrag

    Oh oh...sortieren von TreeViews ist doch nicht so einfach, wie ich mir das gedacht hatte.
    Hatte die UDFs im Hinterkopf, doch die Sort-Funktion bietet keine weiteren Optionen zum sortieren.
    Sie sortiert stur nach Strings:

    Spoiler anzeigen
    [autoit]


    #include <GuiTreeView.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Treeview")
    Global $id = 0, $dir[9999], $path = "c:\Programme\AutoIt3\"

    [/autoit] [autoit][/autoit] [autoit]

    $tree = GUICtrlCreateTreeView(0, 0, 481, 353)
    $dir[$id] = GUICtrlCreateTreeViewItem($path, $tree)
    GUISetState(@SW_SHOW)
    searchdir($path, $id)
    ReDim $dir[$id + 1]
    GUICtrlSetState($dir[0], $GUI_EXPAND)
    MsgBox(0, 0, 'Jetzt sortieren')
    _GUICtrlTreeView_Sort($tree)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $g = GUIGetMsg()
    If $g = -3 Then Exit
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func searchdir($d, $i)
    Local $f, $n, $s
    $f = FileFindFirstFile($d & "*")
    While 1
    $n = FileFindNextFile($f)
    If @error Then ExitLoop
    $s = DirGetSize($d & $n)
    If $s > -1 Then
    $id += 1
    $dir[$id] = GUICtrlCreateTreeViewItem(Round($s / 1024 / 1024, 3) & " MB - " & $n, $dir[$i])
    searchdir($d & $n & "\", $id)
    EndIf
    WEnd
    EndFunc ;==>searchdir

    [/autoit]

    Man müsste also die "1. Ebene" einlesen, sortieren, ins TreeView eintragen und dann erst die Child-Items erstellen.

  • Hallo

    auf Oscar Skript aufbauend:

    Spoiler anzeigen
    [autoit]

    #include <GuiTreeView.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Treeview")
    Global $id = 0, $dir[9999], $path = "c:\Programme\AutoIt3\"

    [/autoit] [autoit][/autoit] [autoit]

    $tree = GUICtrlCreateTreeView(0, 0, 481, 353)
    $dir[$id] = GUICtrlCreateTreeViewItem($path, $tree)
    GUISetState(@SW_SHOW)
    searchdir($path, $id, $tree)
    ReDim $dir[$id + 1]
    GUICtrlSetState($dir[0], $GUI_EXPAND)
    MsgBox(0, 0, 'Bin Fertig')
    ;_GUICtrlTreeView_Sort($tree)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $g = GUIGetMsg()
    If $g = -3 Then Exit
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func searchdir($d, $i,$sortNode)
    Local $f, $n, $s
    $f = FileFindFirstFile($d & "*")
    While 1
    $n = FileFindNextFile($f)
    If @error Then ExitLoop
    $s = DirGetSize($d & $n)
    If $s > -1 Then
    $id += 1
    $dir[$id] = GUICtrlCreateTreeViewItem(StringFormat("[%10s]", Round($s / 1024 / 1024, 3)) & " MB - " & $n, $dir[$i])
    _GUICtrlTreeView_Sort($sortNode) ; immer nur einen Ast sortieren
    searchdir($d & $n & "\", $id, $dir[$id])
    EndIf
    WEnd
    EndFunc ;==>searchdir

    [/autoit]


    die Reihenfolge ist leider gerade umgedreht, aber damit solltest du erstmal weiterkommen

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (25. Mai 2009 um 20:16)

  • Hallo Oscar,

    ich weis, bin noch daran am arbeiten (kämpfe noch mit StringFormat, hab ich bis jetzt zu selten benutzt) Die aktuelle Version im Spoiler würde richtig sortieren, wenn ich es schaffe, dass immer alle 3 Nachkommastellen usgegeben werden und da ich unbedingt mit StringFormat lösen will, kann es noch etwas dauern,

    so diese sortiert richtig allerdings aufsteigend:

    Spoiler anzeigen
    [autoit]

    #include <GuiTreeView.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Treeview")
    Global $id = 0, $dir[9999], $path = "c:\Programme\AutoIt3\"

    [/autoit] [autoit][/autoit] [autoit]

    $tree = GUICtrlCreateTreeView(0, 0, 481, 353)
    $dir[$id] = GUICtrlCreateTreeViewItem($path, $tree)
    GUISetState(@SW_SHOW)
    searchdir($path, $id, $tree)
    ReDim $dir[$id + 1]
    GUICtrlSetState($dir[0], $GUI_EXPAND)
    MsgBox(0, 0, 'Bin fertig')
    ;_GUICtrlTreeView_Sort($tree)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $g = GUIGetMsg()
    If $g = -3 Then Exit
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func searchdir($d, $i,$sortNode)
    Local $f, $n, $s
    $f = FileFindFirstFile($d & "*")
    While 1
    $n = FileFindNextFile($f)
    If @error Then ExitLoop
    $s = DirGetSize($d & $n)
    If $s > -1 Then
    $id += 1
    $sSize = StringFormat("%.3f",Round($s / 1024 / 1024, 3))
    $dir[$id] = GUICtrlCreateTreeViewItem(StringFormat("[%10s]", $sSize) & " MB - " & $n, $dir[$i])
    _GUICtrlTreeView_Sort($sortNode)
    searchdir($d & $n & "\", $id, $dir[$id])
    EndIf
    WEnd
    EndFunc ;==>searchdir

    [/autoit]

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (25. Mai 2009 um 20:31)

  • Hallo Oscar ,

    die Sortierung scheint jetzt zu passen, jedoch hab ich zweifel an den Größenangaben. Kann es durch Summieren der Rundungsdifferenz passieren, dass alle Unterordner zusammen z.T. bis 1% weniger ergeben als der Parent?

    Spoiler anzeigen
    [autoit]

    #include <GuiTreeView.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Treeview")
    Global $id = 0, $dir[9999], $path = "c:\Programme\AutoIt3\"

    [/autoit] [autoit][/autoit] [autoit]

    $tree = GUICtrlCreateTreeView(0, 0, 481, 353)
    $dir[$id] = GUICtrlCreateTreeViewItem($path, $tree)
    GUISetState(@SW_SHOW)
    searchdir($path, $id, $tree)
    ReDim $dir[$id + 1]
    GUICtrlSetState($dir[0], $GUI_EXPAND)
    MsgBox(0, 0, 'Bin fertig')
    ;_GUICtrlTreeView_Sort($tree)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $g = GUIGetMsg()
    If $g = -3 Then Exit
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func searchdir($d, $i,$sortNode)
    Local $f, $n, $s
    $f = FileFindFirstFile($d & "*")
    While 1
    $n = FileFindNextFile($f)
    If @error Then ExitLoop
    $s = DirGetSize($d & $n)
    If $s > -1 Then
    $id += 1
    $sSize = StringFormat("%.3f",Round($s / 1024 / 1024, 3))
    $dir[$id] = GUICtrlCreateTreeViewItem(StringFormat("%10s", $sSize) & " MB - " & $n, $dir[$i])
    _GUICtrlTreeView_Sort($sortNode)
    searchdir($d & $n & "\", $id, $dir[$id])
    EndIf
    WEnd
    EndFunc ;==>searchdir

    [/autoit]

    mfg (Auto)Bert

  • Hey ihr Beiden. Ihr seit echt klasse! :thumbup:

    Über die Funktion "_GUICtrlTreeView_Sort(http://www.autoit.de/dokumentation_…g_variables.htm)" wusste ich noch garnicht Bescheid :)

    Zwar ist die Reinfolge nicht soherum wie vorgesehen, aber das ist eig. auch kein Problem!

    Echt Super!

    Vielen Dank - Freue mich echt suuper!

    lG

    Lenny :)

    Edit1:

    Ich bins nochmal! Das sortieren klappt auf der ersten Ebene wunderbar. Nur wenn ich tiefer gehe, ist es nicht mehr sortiert.
    Ich schau mal ob ich das Problem finden kann :)

    Jaja, Moo does the Cow!

    Einmal editiert, zuletzt von Lenny (25. Mai 2009 um 21:50)

  • Hallo Lenny,

    tut mir leid, dass ich dir die Freude an der Sortierung vermiesen muss, aber die Routine klappt nur in der ersten Ebene korrekt, danach geht die Sortierung daneben,

    Zitat

    Zitat von Oscar in #8 :Man müsste also die "1. Ebene" einlesen, sortieren, ins TreeView eintragen und dann erst die Child-Items erstellen.

    das ist eine Möglichkeit bzw. wenn auf ein Child-Item klickt, wieder nur die Childs der 1. Ebene erstellen und sortieren


    mfg (Auto)Bert

    • Offizieller Beitrag

    Das Problem mit der "1. Ebene" scheint ein Bug zu sein. Im engl. Forum habe ich eine Funktion gefunden, bei der das behoben wurde.
    Dann geht es auch so:

    Spoiler anzeigen
    [autoit]


    #include <TreeViewConstants.au3>
    #include <GuiTreeView.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Treeview")
    Global $id = 0, $dir[9999], $path = "c:\Programme\AutoIt3\"

    [/autoit] [autoit][/autoit] [autoit]

    $tree = GUICtrlCreateTreeView(0, 0, 481, 353)
    $dir[$id] = GUICtrlCreateTreeViewItem($path, $tree)
    GUISetState(@SW_SHOW)
    searchdir($path, $id)
    ReDim $dir[$id + 1]
    GUICtrlSetState($dir[0], $GUI_EXPAND)
    __GUICtrlTreeView_Sort($tree)
    MsgBox(0, 0, 'Bin fertig')

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $g = GUIGetMsg()
    If $g = -3 Then Exit
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func searchdir($d, $i)
    Local $f, $n, $s
    $f = FileFindFirstFile($d & "*")
    While 1
    $n = FileFindNextFile($f)
    If @error Then ExitLoop
    $s = DirGetSize($d & $n)
    If $s > -1 Then
    $id += 1
    $sSize = StringFormat("%.3f", $s / 1024 / 1024, 3)
    $dir[$id] = GUICtrlCreateTreeViewItem(StringFormat("[%13s]", $sSize) & " MB - " & $n, $dir[$i])
    searchdir($d & $n & "\", $id)
    EndIf
    WEnd
    EndFunc ;==>searchdir

    [/autoit] [autoit][/autoit] [autoit]

    ; aus dem engl. Forum
    Func __GUICtrlTreeView_Sort($hWnd)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Local $hItem, $i_Recursive = 1
    $hItem = _GUICtrlTreeView_GetFirstItem($hWnd)
    While $hItem <> 0
    DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hWnd, 'uint', $TVM_SORTCHILDREN, 'wparam', $i_Recursive, 'lparam', $hItem)
    $hItem = _GUICtrlTreeView_GetNext($hWnd, $hItem)
    WEnd
    EndFunc ;==>__GUICtrlTreeView_Sort

    [/autoit]
  • Hallo Oscar ,

    bei der von mir geposteten letzten Version wr definitiv ein von mir programmierter Bug drinnen. Beim Versuch des Korrigierens bin ich allerdings verzweifelt, ich konnte die eingebaue Sortierung an die meines Erachtens richtige Stelle setzen, aber es kam trotzdem das gleiche Ergebnis. Ich bin froh dass du eine Lösung gefunden hast, dann kann ich ja aufhören zu suchen,

    mfg (Auto)Bert

  • Hey!

    Großartig!

    Vielen Dank - echt super :)

    lG,

    Lenny

    Edit1: Bei mir stimmt die sortierung irgendwie auch nicht, und es crashed irgendwann :O

    Jaja, Moo does the Cow!

    Einmal editiert, zuletzt von Lenny (26. Mai 2009 um 10:08)

    • Offizieller Beitrag

    Es "crasht" wenn das Array nicht mehr ausreicht, also bei mehr als 10.000 Verzeichnissen.
    Einfach das Array entsprechend größer dimensionieren.

    Edit: Ich hab das Script noch etwas angepasst (sieht IMHO besser aus):

    Spoiler anzeigen
    [autoit]


    #include <TreeViewConstants.au3>
    #include <GuiTreeView.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Treeview", 640, 480)
    Global $id = 0, $dir[100000], $path = "c:\"

    [/autoit] [autoit][/autoit] [autoit]

    $tree = GUICtrlCreateTreeView(5, 5, 630, 450)
    GUICtrlSetFont(-1, 9, 400, 0, 'Courier New')
    $dir[$id] = GUICtrlCreateTreeViewItem($path, $tree)
    $status = GUICtrlCreateLabel('', 0, 460, 640, 20)
    GUISetState(@SW_SHOW)
    AdlibEnable('PleaseWait', 100)
    searchdir($path, $id)
    GUICtrlSetData($status, ' Sortiere...')
    AdlibDisable()
    ReDim $dir[$id + 1]
    GUICtrlSetState($dir[0], $GUI_EXPAND)
    __GUICtrlTreeView_Sort($tree)
    GUICtrlSetData($status, ' Fertig. (' & $id & ' Verzeichnisse)')

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $g = GUIGetMsg()
    If $g = -3 Then Exit
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func PleaseWait()
    GUICtrlSetData($status, ' Please wait...' & $id)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func searchdir($d, $i)
    Local $f, $n, $s
    $f = FileFindFirstFile($d & "*")
    While 1
    $n = FileFindNextFile($f)
    If @error Then ExitLoop
    $s = DirGetSize($d & $n)
    If $s > -1 Then
    $id += 1
    $sSize = StringFormat("%.3f", $s / 1024 / 1024, 3) & " MB"
    $dir[$id] = GUICtrlCreateTreeViewItem(StringFormat("[%16s]", $sSize) & " - " & $n, $dir[$i])
    searchdir($d & $n & "\", $id)
    EndIf
    WEnd
    EndFunc ;==>searchdir

    [/autoit] [autoit][/autoit] [autoit]

    ; aus dem engl. Forum
    Func __GUICtrlTreeView_Sort($hWnd)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Local $hItem, $i_Recursive = 1
    $hItem = _GUICtrlTreeView_GetFirstItem($hWnd)
    While $hItem <> 0
    DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hWnd, 'uint', $TVM_SORTCHILDREN, 'wparam', $i_Recursive, 'lparam', $hItem)
    $hItem = _GUICtrlTreeView_GetNext($hWnd, $hItem)
    WEnd
    EndFunc ;==>__GUICtrlTreeView_Sort

    [/autoit]