- Offizieller Beitrag
Hallo Doppelass
Ok danke für die antwort ich hab das skript einfach ein wenig umgeschrieben, sollte so genauso gut gehen:
Spoiler anzeigen
C
;~ ###################################################
;~ # Funktion: Stellt Dateiinhalt als TreeView dar
;~ #
;~ # Autor: bernd670 & GtaSpider
;~ ##################################################
#include <File.au3>
#include <Array.au3>
#include <GUIConstants.au3>
;TreeView
Global Const $TVGN_NEXT = 0x0001
Global Const $TVGN_CHILD = 0x0004
Global Const $TVI_ROOT = 0xFFFF0000
Global Const $TV_FIRST = 0x1100
Global Const $TVM_GETCOUNT = $TV_FIRST + 5
Global Const $TVM_GETNEXTITEM = $TV_FIRST + 10
Global Const $TVM_SORTCHILDREN = $TV_FIRST + 19
Global $Tree[1], $FileTable[1][2]
$datei = "MAX-01(192.168.0.2).txt"
SplashTextOn("dada","initalizing",130,20,-1,-1,1)
;~ Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
Opt("TrayIconDebug",1)
$mainwindow = GUICreate("BG Commander - "&$datei, 359, 439, 193, 126)
$TreeView = GUICtrlCreateTreeView(10, 10, 261, 397, BitOR($WS_BORDER, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS))
GUICtrlSetImage(-1, "shell32.dll", 4, 2)
$Search = GUICtrlCreateInput("", 60, 410, 121, 20)
GUICtrlCreateLabel("Suche:", 20, 410, 38, 15)
$SearchBut = GUICtrlCreateButton("Suchen", 190, 410, 82, 25, 0)
$start = GUICtrlCreateButton("Datei &Starten", 280, 10, 75, 25, 0)
$exit = GUICtrlCreateButton("E&xit", 280, 410, 75, 25, 0)
GUICtrlCreateEdit("", 280, 40, 75, 359, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
GUICtrlSetData(-1, "Copyright by"&@CRLF&"Bernd 670"&@CRLF&"& GtaSpider"&@CRLF&""&@CRLF&"Was macht"&@CRLF&"dieser"&@CRLF&"Commander?"&@CRLF&""&@CRLF&"Er listet von"&@CRLF&"einer Datei,"&@CRLF&"Dateien,"&@CRLF&"Ordner"&@CRLF&"und"&@CRLF&"Laufwerke"&@CRLF&"auf die er"&@CRLF&"dann in der"&@CRLF&"Box"&@CRLF&"Kompfortabel"&@CRLF&"anzeigt"&@CRLF&"werden"&@CRLF&""&@CRLF&"Was mach"&@CRLF&"ich bei Problemen?"&@CRLF&""&@CRLF&"Entweder eine"&@CRLF&"Im Forum"&@CRLF&"fragen!")
MakeFileTree($datei)
SplashOff()
;~ GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE Or $msg = $exit
Exit
Case $msg = $start
SelectFile(GUICtrlRead($TreeView))
Case $msg = $SearchBut
$SearchFile = GUICtrlRead($Search)
Search($SearchFile)
EndSelect
WEnd
Func Search($Search)
;Hier kommt dann die Suchfunktion rein!
MsgBox(0,"",$Search)
EndFunc
Func SelectFile($lastclick)
;Beachte: an diesem Punkt wäre @GUI_CTRLID gleich $Tree[$Ebene]
For $index = 0 To UBound($FileTable, 1) - 1
If $FileTable[$index][0] = $lastclick Then
RunWait(@ComSpec & ' /c start '&$FileTable[$index][1], '', @SW_HIDE)
ExitLoop
EndIf
Next
EndFunc ;==>SelectFile
Func MakeFileTree($strFileName)
Local $arFile, $arTemp, $iFile, $iInsert, $iPos, $iPos2
If Not FileExists($strFileName) Then
MsgBox(16, "Fehler", "Datei " & $strFileName & " wurde nicht gefunden!")
Exit
EndIf
_FileReadToArray($strFileName, $arFile)
;~ _ArraySort($arFile,0,0,1)
; Leerzeilen entfernen
$iPos = 1
While 1
If Not stringlen(StringStripWS($arFile[1],15)) Then
_ArrayDelete($arFile,1)
$arFile[0] = $arFile[0] - 1
Else
ExitLoop
EndIf
$iPos = $iPos + 1
Wend
$Ebene = 0
$arTemp = StringSplit(StringStripCR($arFile[1]), "\")
For $iInsert = 1 To $arTemp[0]
If UBound($Tree, 1) <= $Ebene Then ReDim $Tree[$Ebene + 1]
Select
Case $iInsert = 1
; Laufwerksbezeichnung
ControlSetText("dada","","Static1", $arTemp[$iInsert])
$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$iInsert], $TreeView)
$icon = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons", "8")
If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
$icon2 = "-1"
$sis = StringInStr($icon, ",", 0, -1)
If Not @error Then
$icon2 = StringTrimLeft($icon, $sis)
$icon = StringTrimRight($icon, StringLen($icon2) + 1)
EndIf
GUICtrlSetImage(-1, $icon, $icon2)
$Ebene = $Ebene + 1
Case $iInsert = $arTemp[0]
; Dateiname
$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$iInsert], $Tree[$Ebene - 1])
$ext = StringTrimLeft($arTemp[$iInsert], StringInStr($arTemp[$iInsert], ".", 0, -1) - 1)
$icon = RegRead("HKCR\" & $ext, "")
$icon = RegRead("HKCR\" & $icon & "\DefaultIcon", "")
If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
$icon2 = "-1"
$sis = StringInStr($icon, ",", 0, -1)
If Not @error Then
$icon2 = StringTrimLeft($icon, $sis)
$icon = StringTrimRight($icon, StringLen($icon2) + 1)
EndIf
;~ MsgBox(0,$icon2,$icon)
GUICtrlSetImage($Tree[$Ebene], $icon, $icon2)
$FileTable[UBound($FileTable, 1) - 1][0] = $Tree[$Ebene]
$FileTable[UBound($FileTable, 1) - 1][1] = $arFile[1]
;~ GUICtrlSetOnEvent($Tree[$Ebene], "SelectFile")
ReDim $FileTable[UBound($FileTable, 1) + 1][2]
Case Else
; Verzeichnisname
$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$iInsert], $Tree[$Ebene - 1])
$Ebene = $Ebene + 1
EndSelect
Next
For $iFile = 2 To $arFile[0]
$arTemp = StringSplit(StringStripCR($arFile[$iFile]), "\")
$iPos = StringInStr($arFile[$iFile], "\", 0, -1)
$strLeft = StringLeft($arFile[$iFile], $iPos)
; Ebenenkorrektur
$iPos2 = StringInStr($arFile[$iFile - 1], "\", 0, -1)
$Ebene = $Ebene + (UBound(StringSplit($strLeft, "\"), 1) - UBound(StringSplit(StringLeft($arFile[$iFile - 1], $iPos2), "\"), 1))
For $iSearch = 0 To $arTemp[0] - 1
If StringLeft($arFile[$iFile - 1], StringLen($strLeft)) = $strLeft Then
For $iInsert = $iSearch To 0 Step - 1
If UBound($Tree, 1) <= $Ebene Then ReDim $Tree[$Ebene + 1]
Select
Case $iInsert = 0
; Dateiname
If $Ebene = 0 Then $Ebene = 1
$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$arTemp[0] - $iInsert], $Tree[$Ebene - 1])
$ext = StringTrimLeft($arTemp[$arTemp[0] - $iInsert], StringInStr($arTemp[$arTemp[0] - $iInsert], ".", 0, -1) - 1)
$icon = RegRead("HKCR\" & $ext, "")
$icon = RegRead("HKCR\" & $icon & "\DefaultIcon", "")
If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
$icon2 = "-1"
$sis = StringInStr($icon, ",", 0, -1)
If Not @error Then
$icon2 = StringTrimLeft($icon, $sis)
$icon = StringTrimRight($icon, StringLen($icon2) + 1)
EndIf
;~ MsgBox(0,$icon2,$icon)
GUICtrlSetImage($Tree[$Ebene], $icon, $icon2)
$FileTable[UBound($FileTable, 1) - 1][0] = $Tree[$Ebene]
$FileTable[UBound($FileTable, 1) - 1][1] = $arFile[$iFile]
;~ GUICtrlSetOnEvent($Tree[$Ebene], "SelectFile")
ReDim $FileTable[UBound($FileTable, 1) + 1][2]
Case $iInsert = $arTemp[0] - 1
; Laufwerksbezeichnung
ControlSetText("dada","","Static1", $arTemp[$arTemp[0] - $iInsert])
$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$arTemp[0] - $iInsert], $TreeView)
$icon = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons", "8")
If $icon = "%1" Or @error Or $icon = "" Then $icon = "shell32.dll,2"
$icon2 = "-1"
$sis = StringInStr($icon, ",", 0, -1)
If Not @error Then
$icon2 = StringTrimLeft($icon, $sis)
$icon = StringTrimRight($icon, StringLen($icon2) + 1)
EndIf
GUICtrlSetImage(-1, $icon, $icon2)
$Ebene = $Ebene + 1
Case Else
; Verzeichnisname
$Tree[$Ebene] = GUICtrlCreateTreeViewItem($arTemp[$arTemp[0] - $iInsert], $Tree[$Ebene - 1])
$Ebene = $Ebene + 1
EndSelect
Next
ExitLoop
Else
$Ebene = $Ebene - 1
EndIf
$iPos = StringInStr($strLeft, "\", 0, -2)
$strLeft = StringLeft($strLeft, $iPos)
Next
Next
_GUICtrlTreeViewSort ($TreeView)
EndFunc ;==>MakeFileTree
;===============================================================================
;
; Description: _GUICtrlTreeViewSort
; Parameter(s): $i_treeview - controlID
; Requirement: None
; Return Value(s): None
; User CallTip: _GUICtrlTreeViewSort($i_treeview) Sorts the items of a Tree-View control (required: <GuiTreeView.au3>)
; Author(s): Gary Frost (custompcs at charter dot net)
; Note(s):
;
;===============================================================================
Func _GUICtrlTreeViewSort($i_treeview)
Local $h_item, $i, $hChild, $i_Recursive = 1
Local $a_tree
For $i = 0 To GUICtrlSendMsg($i_treeview, $TVM_GETCOUNT, 0, 0)
If $i == 0 Then
$h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $TVI_ROOT)
Else
$h_item = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_NEXT, $h_item)
EndIf
If IsArray($a_tree) Then
ReDim $a_tree[UBound($a_tree) + 1]
Else
Dim $a_tree[1]
EndIf
$a_tree[UBound($a_tree) - 1] = $h_item
Next
If IsArray($a_tree) Then
For $i = 0 To UBound($a_tree) - 1
GUICtrlSendMsg($i_treeview, $TVM_SORTCHILDREN, $i_Recursive, $a_tree[$i]) ; sort the items in root
Do ; sort all the children
$hChild = GUICtrlSendMsg($i_treeview, $TVM_GETNEXTITEM, $TVGN_CHILD, $h_item)
If $hChild > 0 Then
GUICtrlSendMsg($i_treeview, $TVM_SORTCHILDREN, $i_Recursive, $hChild)
EndIf
$h_item = $hChild
Until $h_item <= 0
Next
EndIf
EndFunc ;==>_GUICtrlTreeViewSort
Alles anzeigen
Mfg Spider