Andy: Den gleichen Fehler habe ich seinerzeit gemacht, als diese Funktion in die Beta eingeflossen ist: http://www.autoit.de/index.php?page=Thread&postID=97821#post97821 ![]()
Beiträge von Oscar
-
-
Ich denke, Du meinst diese Funktion:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0,0,_SoundGetWaveVolume())Func _SoundGetWaveVolume()
[/autoit]
Local $WaveVol = -1, $p, $ret
Local Const $MMSYSERR_NOERROR = 0
$p = DllStructCreate('dword')
If @error Then Return SetError(2, 0, -2)
$ret = DllCall('winmm.dll', 'long', 'waveOutGetVolume', 'long', -1, 'long', DllStructGetPtr($p))
If ($ret[0] == $MMSYSERR_NOERROR) Then
$WaveVol = Round(Dec(StringRight(Hex(DllStructGetData($p, 1), 8), 4)) / 0xFFFF * 100)
Else
SetError(1)
EndIf
$p = 0
Return $WaveVol
EndFunc ;==>_SoundGetWaveVolume
Allerdings funktioniert sie nicht unter Win7 (64 Bit). Dort wird immer "100" ausgegeben. Ich bin noch auf der Suche nach einer Alternative... -
Ok, vielleicht Verständnisproblem, aber wenn ich den gesamten AutoIt-Ordner (wie in Deinem Beispiel) kopieren will, dann möchte ich doch auch den AutoIt-Ordner selbst als Verzeichnis im Zielverzeichnis haben.
Ich bin mir jetzt nicht 100%ig sicher, aber war das in den alten AutoIt-Versionen nicht anders?Dann müsste man ja immer erst das Verzeichnis (Beispiel: AutoIt) im Zielverzeichnis erstellen. Für mich ist das irgendwie ein Widerspruch zu:
ZitatIf the destination directory structure doesn't exist, it will be created (if possible).
Und wenn das Verzeichnis leer ist, wird es gar nicht kopiert/erstellt. Ich müsste also vorher feststellen, ob das Verzeichnis leer ist und es dann mit DirCreate erstellen.

Bezüglich des kopierens der Datei in dem Ordner, siehe den Edit meines letzten Postings.

-
Es scheint so, als wäre das ein Bug in DirCopy.
Ich habe eben folgendes ausprobiert:
[autoit]
[/autoit]
$ret = DirCopy('d:\temp\BluetoothBTW', 'e:\hallo', 1)
ConsoleWrite($ret & @CRLF)
Der Ordner "BluetoothBTW" existiert und in dem befindet sich ein weiterer Ordner namens "BTW_6.2.1.0100" und darin befinden sich dann noch mehrere Dateien und noch einige Ordner.
Obiges Script liefert "1" zurück, aber im Verzeichnis "e:\hallo" wird nicht das Verzeichnis "BluetoothBTW" erstellt, sondern der Ordner "BTW_6.2.1.0100" und alle Dateien und Ordner, die sich in diesem befinden, werden kopiert.
Edit: Dieser Teil stimmt nicht:Eine Datei, die sich direkt in "BluetoothBTW" befindet (Pfad: "d:\temp\BluetoothBTW\test.bmp") wird hingegen nicht kopiert.Das lag vermutlich an der späten Uhrzeit und meiner daher schon eingeschränkten Wahrnehmung.
Nächster Test mit dem gleichen Pfad, dieses mal jedoch mit einem leeren Ordner "d:\temp\BluetoothBTW". Das Script liefert auch dieses mal eine "1" zurück, aber das Verzeichnis "BluetoothBTW" wird auch hier nicht im Zielverzeichnis erstellt.Ich habe absichtlich nicht @TempDir gewählt, um evtl. Berechtigungen auszuschließen. Das hat aber offensichtlich auch nichts damit zu tun, weil der Fehler ebenso unter WinXP auftritt.
Getestest mit: "Win7, 64 Bit" und "WinXP, 32 Bit"
AutoIt-Version: v3.3.4.0Vielleicht kann das mal jemand mit besseren Englischkenntnissen als Bugmeldung abgeben.
-
Oh, mann! Hast aber 'ne Leiche ausgebuddelt.

Nimm lieber "HKEY_CURRENT_USER\Software\Classes\http\shell\open\command", dann bekommst Du den Pfad vom gerade angemeldeten User.
Das geht übrigens auch als Einzeiler:
[autoit]
[/autoit][autoit][/autoit][autoit]
MsgBox(0,0,_GetStandardBrowser())Func _GetStandardBrowser()
[/autoit]
Return StringRegExpReplace(RegRead('HKEY_CURRENT_USER\Software\Classes\http\shell\open\command', ''), '.+\\(.+)\.exe.+', '$1')
EndFuncUnd vor allem: Standard bitte!
-
Hmm...das ist ja eigenartig...
Hast Du beim Installieren angeben, dass die .au3-Dateien ausgeführt (run) oder in SciTE angezeigt (edit) werden sollen?
Ich benutze immer "edit", vielleicht ist das der Grund?
Ansonsten fällt mir auch nichts mehr ein. Müsste sich mal einer mit Vista zu Wort melden. -
Ich habe jetzt zumindest die Laufwerk-Icons eingebaut. Außerdem noch etwas an der Geschwindigkeit verbessert. Neue Version in Post#1.
-
Naja, sind nur ein paar Zeilen:
Spoiler anzeigen
[autoit]
[/autoit]
$sSourceDir = 'c:\temp\' ; alle Dateien aus diesem Verzeichnis
$sDestDir = 'd:\temp\' ; in dieses Verzeichnis kopieren
$aFileList = _FileListToArray($sSourceDir, '*', 1)
If Not IsArray($aFileList) Then Exit
For $i = 1 To $aFileList[0]
If StringLeft(FileGetTime($sSourceDir & $aFileList[$i], 0, 1),
= @YEAR & @MON & @MDAY Then
FileCopy($sSourceDir & $aFileList[$i], $sDestDir)
EndIf
Next -
Pack das WinFlash in eine Funktion und rufe sie Timergesteuert auf. Entweder mit _Timer_SetTimer oder mit AdlibRegister.
-
Naja, ich habe Win7, aber es funktioniert alles (auch ohne Adminrechte).
Die von Dir beschriebene Fehlermeldung kenne ich aber auch nur, wenn die Pfade nicht stimmen, sprich: Du hast die Hilfedatei nicht im AutoIt-Verzeichnis oder Du hast die Beispieldateien nicht (oder nicht richtig) installiert. -
Hmm...da ist was dran...
Demzufolge müsste ich mir jetzt ein paar Nanoxia FX zulegen.
-
Oder so:
[autoit]
[/autoit]
$string= '<td><select name="country" onchange="__doPostBack("country","")" language="javascript" id="country"> <option value="-1">Please Select</option> <option value="1">Afghanistan</option> <option value="2">Albania</option> <option value="3">Algeria</option> <option value="4">American Samoa</option> ..... da sind noch mehrere Länder aufgeführt.... <option value="82">Georgia</option> <option selected="selected" value="83">Germany</option> <option value="84">Ghana</option>'
$select = StringRegExpReplace($string, '(?s).+<option selected="selected" value=".*?">(.+?)<\/option>.*', '$1')
MsgBox(0, 0, $select) -
Schau Dir mal _Singleton() in der Hilfe an.
Von SciTE aus kannst Du das Script aber sowieso nur einmal starten. Also entweder den Interpreter von Hand starten und dort das Script angeben oder das Script erst compilieren und dann starten. -
Uh! Noiseblocker nicht gut? Na dann, werden wohl bald wieder neue fällig...
Aber die Nanoxia und Xigmatek kommen mal mit auf meine Liste.

-
Na dann aber mit WM_HSCROLL:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <StructureConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>#Region ### START Koda GUI section ### Form=e:\dokumente und einstellungen\phfroherz\eigene dateien\koda forms\tools.kxf
[/autoit] [autoit][/autoit] [autoit]
$Tools = GUICreate("Tools", 594, 454, 466, 353)
$Tab1 = GUICtrlCreateTab(16, 16, 569, 425)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
$TabSheet1 = GUICtrlCreateTabItem("Inventar Verkaufen")
$hSlider = GUICtrlCreateSlider(152, 240, 310, 45)
GUICtrlSetLimit(-1, 50, 0)
$verkaufen = GUICtrlCreateButton("Verkaufen", 272, 344, 75, 25, 0)
$slots = GUICtrlCreateLabel(GUICtrlRead($hSlider), 288, 288, 27, 17)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUIRegisterMsg($WM_HSCROLL, "_WM_HSCROLL")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndFunc _WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)
[/autoit]
Local $nID
$nID = BitAND($wParam, 0x0000FFFF)
If $nID = $hSlider Then GUICtrlSetData($slots, GUICtrlRead($hSlider))
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_HSCROLL -
Das mit den Dateisymbolen habe ich schon versucht, aber das auslesen aus den Dateien dauert zu lange.
Hier mal mein Versuch:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <StructureConstants.au3>
#include <GuiImageList.au3>
#include <TreeViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
#include <File.au3>$sPath = 'C:'
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate('Select File or Folder', 400, 400)
[/autoit] [autoit][/autoit] [autoit]
$hTreeview = GUICtrlCreateTreeView(10, 10, 380, 360, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS))
$hWndTreeview = GUICtrlGetHandle($hTreeview)
$hOk = GUICtrlCreateButton('Ok', 240, 375, 60, 22)
$hCancel = GUICtrlCreateButton('Cancel', 320, 375, 60, 22)$hImage = _GUIImageList_Create(16, 16, 5, 3)
[/autoit] [autoit][/autoit] [autoit]
_GUIImageList_AddIcon($hImage, 'shell32.dll', 4)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 1)
_GUICtrlTreeView_SetNormalImageList($hTreeview, $hImage)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetStyle($hTreeview, Default, $WS_EX_COMPOSITED + $WS_EX_CLIENTEDGE)$hRoot = _GUICtrlTreeView_Add($hTreeview, $hTreeview, $sPath, 0, 0)
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlTreeView_SetState($hTreeview, $hRoot, $TVIS_EXPANDED)_GUICtrlTreeView_BeginUpdate($hTreeview)
[/autoit] [autoit][/autoit] [autoit]
GUISetCursor(15, 1, $hGui)
_GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hRoot, $sPath, 2)
GUISetCursor(2, 1, $hGui)
_GUICtrlTreeView_EndUpdate($hTreeview)GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
[/autoit] [autoit][/autoit] [autoit]
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $hCancel
Exit
Case $hOk
_GUIImageList_Destroy($hImage)
$iSelect = _GUICtrlTreeView_GetSelection($hTreeview)
$sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $iSelect), '|', '\')
MsgBox(0, 'Selected Path/File', $sTree)
EndSwitch
WEndFunc _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
#forceref $hWnd, $iMsg, $iwParam
GUIRegisterMsg($WM_NOTIFY, '')
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
$iCode = DllStructGetData($tNMHDR, 'Code')
If $hWndFrom = $hWndTreeview And $iCode = $NM_CLICK Then
ToolTip('Please wait...', Default, Default, 'Read Directory', 1)
_GUICtrlTreeView_FileExplorer($hGui, $hTreeview)
ToolTip('')
EndIf
GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_NOTIFYFunc _GUICtrlTreeView_FileExplorer($hGui, $hTreeview)
[/autoit] [autoit][/autoit] [autoit]
Local $aTVPos, $aPos, $hItem, $hChild, $sTree
$aTVPos = ControlGetPos($hGui, '', $hTreeview)
$aPos = GUIGetCursorInfo($hGui)
$hItem = _GUICtrlTreeView_HitTestItem($hTreeview, $aPos[0], $aPos[1] - $aTVPos[1])
If _GUICtrlTreeView_GetExpanded($hTreeview, $hItem) Then Return
$hChild = _GUICtrlTreeView_GetFirstChild($hTreeview, $hItem)
_GUICtrlTreeView_BeginUpdate($hTreeview)
If $hChild <> 0 Then
$sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), '|', '\')
_GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
_GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hChild, $sTree, 1)
EndIf
Do
$hChild = _GUICtrlTreeView_GetNextChild($hTreeview, $hChild)
If $hChild <> 0 Then
$sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), '|', '\')
_GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
$iTimer = TimerInit()
_GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hChild, $sTree, 1)
EndIf
Until $hChild = 0
_GUICtrlTreeView_EndUpdate($hTreeview)
EndFunc ;==>_GUICtrlTreeView_FileExplorerFunc _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hItem, $sPath, $iRec)
[/autoit]
Local $aDirList, $aFileList, $tmp, $hIcon
$iRec -= 1
$aDirList = _FileListToArray($sPath, '*', 2)
If IsArray($aDirList) Then
For $i = 1 To $aDirList[0]
If Not StringInStr(FileGetAttrib($sPath & '\' & $aDirList[$i]), 's') Then
$tmp = _GUICtrlTreeView_AddChild($hTreeview, $hItem, $aDirList[$i], 0, 0)
If $iRec > 0 Then _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $tmp, $sPath & '\' & $aDirList[$i], $iRec)
EndIf
Next
EndIf
$aFileList = _FileListToArray($sPath, '*', 1)
If IsArray($aFileList) Then
For $i = 1 To $aFileList[0]
If Not StringInStr(FileGetAttrib($sPath & '\' & $aFileList[$i]), 's') Then
$hIcon = _GUIImageList_AddIcon($hImage, $sPath & '\' & $aFileList[$i], 0) ; <-- von hier
If $hIcon = 0 Then
$hIcon = 1
Else
_GUICtrlTreeView_SetNormalImageList($hTreeview, $hImage) ; <-- bis hier
EndIf
$tmp = _GUICtrlTreeView_AddChild($hTreeview, $hItem, $aFileList[$i], $hIcon, $hIcon)
EndIf
Next
EndIf
EndFunc ;==>_GUICtrlTreeView_FileExplorerRecursive
Oder kennst Du eine schnellere Methode?
Weil so ist das nicht wirklich brauchbar.
-
Wie soll das jemand nachvollziehen können?
Poste bitte Dein ganzes Script und die "S2.dat" oder eine entsprechende Beispieldatei, wenn da private Dinge drin stehen.
Wenn wir raten sollen, ist weder uns noch Dir geholfen... -
Ja, immer im WorkingDir, aber das kann sich ändern und entspricht dann nicht mehr dem ScriptDir.
Verwende also lieber @ScriptDir & "\konfig.ini" (wichtig ist der Backslash vor dem Dateinamen). -
Eine Indexsuche würde ich so programmieren:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
#include <EditConstants.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$sPath = StringRegExpReplace(@AutoItExe, '(.+\\).+', '$1') & 'Include\'
$aFiles = _FileListToArray($sPath, '*.au3', 1)
$hGui = GUICreate('Indexsearch', 400, 300)
$hInput = GUICtrlCreateInput('', 10, 10, 380, 20)
$hFound = GUICtrlCreateInput('', 10, 60, 380, 20, $ES_READONLY)
GUICtrlSetBkColor(-1, 0xffaaaa)
GUISetState()
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSEFunc _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
[/autoit]
Local $nID, $sSearch, $iIndex
$nID = BitAND($wParam, 0x0000FFFF)
If $nID = $hInput Then
$sSearch = GUICtrlRead($hInput)
$iIndex = _ArraySearch($aFiles, $sSearch, 0, 0, 0, 1)
If Not @error Then
GUICtrlSetData($hFound, $aFiles[$iIndex])
GUICtrlSetBkColor($hFound, 0xaaffaa)
Else
GUICtrlSetData($hFound, '')
GUICtrlSetBkColor($hFound, 0xffaaaa)
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc -
@kleiner27: Warum so kompliziert? Gibt doch einen AutoIt-Befehl dazu:
[autoit]
[/autoit]
$aDrives = DriveGetDrive('ALL')
_ArrayDisplay($aDrives)autoBert: Der Unterschied zu _GUICtrlTreeView_CreateDirectory() ist ja der, dass _GUICtrlTreeView_FileExplorer() die Daten nicht alle auf einmal einliest, sondern am Anfang zwei Verzeichnisebenen und anschließend (immer dann, wenn Du auf einen Plus-Button klickst) eine weitere Ebene. Das ist für den Anwender angenehmer, weil er eher den Verzeichnisbaum zu sehen bekommt und schneller darin navigieren kann. Das man dann, wenn ein Ordner viele Unterordner und Dateien enthält (wie beispielsweise das Windows-Verzeichnis), nochmal etwas warten muss, ist der Nachteil dieser Methode.

nuts: Hast Du Dir die neue _FileListToArray-Funktion mal angesehen? Die arbeitet nicht mehr mit ReDims. Ich denke nicht, dass man da noch viel mehr rausholen kann.
Die Funktion von Prog@ndy ist nicht schlecht, aber ja auch kein echtes TreeView.@Ludwig: Die Dateiicons einzulesen kostet aber enorm Zeit und da muss man in AutoIt schon Kompromisse machen.
Edit: Ok, es geht noch etwas schneller, wenn man das Ganze nicht zweimal einliest, sondern alles in eine Schleife packt:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <StructureConstants.au3>
#include <GuiImageList.au3>
#include <TreeViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
#include <File.au3>$sPath = 'c:'
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate('Select File or Folder', 400, 400)
[/autoit] [autoit][/autoit] [autoit]
$hTreeview = GUICtrlCreateTreeView(10, 10, 380, 360, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS))
$hWndTreeview = GUICtrlGetHandle($hTreeview)
$hOk = GUICtrlCreateButton('Ok', 240, 375, 60, 22)
$hCancel = GUICtrlCreateButton('Cancel', 320, 375, 60, 22)$hImage = _GUIImageList_Create(16, 16, 5, 3)
[/autoit] [autoit][/autoit] [autoit]
_GUIImageList_AddIcon($hImage, 'shell32.dll', 1)
_GUIImageList_AddIcon($hImage, 'shell32.dll', 4)
_GUICtrlTreeView_SetNormalImageList($hTreeview, $hImage)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetStyle($hTreeview, Default, $WS_EX_COMPOSITED + $WS_EX_CLIENTEDGE)$hRoot = _GUICtrlTreeView_Add($hTreeview, $hTreeview, $sPath, 1, 1)
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlTreeView_SetState($hTreeview, $hRoot, $TVIS_EXPANDED)_GUICtrlTreeView_BeginUpdate($hTreeview)
[/autoit] [autoit][/autoit] [autoit]
GUISetCursor(15, 1, $hGui)
_GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hRoot, $sPath, 2)
GUISetCursor(2, 1, $hGui)
_GUICtrlTreeView_EndUpdate($hTreeview)GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
[/autoit] [autoit][/autoit] [autoit]
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $hCancel
Exit
Case $hOk
$iSelect = _GUICtrlTreeView_GetSelection($hTreeview)
$sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $iSelect), '|', '\')
MsgBox(0, 'Selected Path/File', $sTree)
EndSwitch
WEndFunc _WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit]
#forceref $hWnd, $iMsg, $iwParam
GUIRegisterMsg($WM_NOTIFY, '')
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
$iCode = DllStructGetData($tNMHDR, 'Code')
If $hWndFrom = $hWndTreeview And $iCode = $NM_CLICK Then
ToolTip('Please wait...', Default, Default, 'Read Directory', 1)
_GUICtrlTreeView_FileExplorer($hGui, $hTreeview)
ToolTip('')
EndIf
GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_NOTIFYFunc _GUICtrlTreeView_FileExplorer($hGui, $hTreeview)
[/autoit] [autoit][/autoit] [autoit]
Local $aTVPos, $aPos, $hItem, $hChild, $sTree
$aTVPos = ControlGetPos($hGui, '', $hTreeview)
$aPos = GUIGetCursorInfo($hGui)
$hItem = _GUICtrlTreeView_HitTestItem($hTreeview, $aPos[0], $aPos[1] - $aTVPos[1])
If _GUICtrlTreeView_GetExpanded($hTreeview, $hItem) Then Return
$hChild = _GUICtrlTreeView_GetFirstChild($hTreeview, $hItem)
_GUICtrlTreeView_BeginUpdate($hTreeview)
If $hChild <> 0 Then
$sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), '|', '\')
_GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
_GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hChild, $sTree, 1)
EndIf
Do
$hChild = _GUICtrlTreeView_GetNextChild($hTreeview, $hChild)
If $hChild <> 0 Then
$sTree = StringReplace(_GUICtrlTreeView_GetTree($hTreeview, $hChild), '|', '\')
_GUICtrlTreeView_DeleteChildren($hTreeview, $hChild)
$iTimer = TimerInit()
_GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hChild, $sTree, 1)
EndIf
Until $hChild = 0
_GUICtrlTreeView_EndUpdate($hTreeview)
EndFunc ;==>_GUICtrlTreeView_FileExplorerFunc _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $hItem, $sPath, $iRec)
[/autoit]
Local $aDirList, $aFileList, $tmp
$iRec -= 1
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*.*')
If $hSearch <> -1 Then
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If @extended Then
If Not StringInStr(FileGetAttrib($sPath & $sFile), 's') Then
$tmp = _GUICtrlTreeView_AddChild($hTreeview, $hItem, $sFile, 1, 1)
If $iRec > 0 Then _GUICtrlTreeView_FileExplorerRecursive($hTreeview, $tmp, $sPath & $sFile, $iRec)
EndIf
Else
If Not StringInStr(FileGetAttrib($sPath & $sFile), 's') Then
_GUICtrlTreeView_AddChild($hTreeview, $hItem, $sFile, 0, 0)
EndIf
EndIf
WEnd
FileClose($hSearch)
EndIf
EndFunc ;==>_GUICtrlTreeView_FileExplorerRecursiveAber dann ist die Sortierung auch eine andere (Vorher: erst die Verzeichnisse, dann die Dateien. Jetzt: Verzeichnisse und Dateien gemischt). Tja, wohl eine Geschmacksfrage...
