Explorer Alternative

  • Ich bin im moment dabei, eine Exploreralternative zu schreiben.
    Was das nützt?
    Beisspielsweise kann man damit ein Remoteprogramm basteln,ohne Bilder von einem anderen pc zu übertragen.( Mach ich ,wenn das hier fertig ^^)
    Naja, Dank der Nachhilfe von Funkey und GTAspider im Kürzen ;)(Nachhilfe) hab ich es soweit gebracht, dass buttons die icons der Dateien anzeigen.
    Hier werde ich nun regelmäßig meine Fortschritte Posten.
    Konstruktive Kritik ist durchaus erwünscht, jedoch bitte ohne flame ;)

    Explorer version 0.000000001 ^^
    Buggs:

    Spoiler anzeigen

    Der nächste Seite button ist nicht immer anwählbar.

    To Do

    Spoiler anzeigen

    Buttons mit den Bildern "verlinken"

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <File.au3>
    $zaeler = 1
    $Pfad = "C:\"
    $FileList = _FileListToArray($Pfad)
    If @error = 1 Then
    MsgBox(0, "", "No Files\Folders Found.")
    Exit
    EndIf

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

    If $FileList[0] = 0 Then
    MsgBox(0, "Fehler", "Der angegebene Ordner enthält keine dateien.")
    EndIf

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

    For $i = 1 To $FileList[0]
    Assign('Name' & $i, $FileList[$i])
    Next
    ;Berechnet anzahl benötigter Seiten:
    If $FileList[0] / 15 < Int($FileList[0] / 15) Then
    $seitenanzahl = Int($FileList[0] / 15)

    Else
    $seitenanzahl = Int($FileList[0] / 15) + 1

    EndIf
    MsgBox(0, $FileList[0], $seitenanzahl)

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

    For $ii = 1 To $seitenanzahl

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

    $Form1 = GUICreate("Seite" & $ii, 874, 652, 191, 132)
    GUISetCursor(0)

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

    $y = 0
    For $i = $zaeler To $zaeler + 15
    Assign("Button" & $i, GUICtrlCreateButton("", 0, $y, 36, 36, $BS_ICON))
    If StringRight(Eval("Name" & $i), 4) = ".lnk" Then
    $aIcon = FileGetShortcut($Pfad & "\" & Eval("Name" & $i))
    GUICtrlSetImage(-1, $aIcon[4], $aIcon[5])
    ElseIf StringRight(Eval("Name" & $i), 4) = ".exe" Then ; Bild der exedatei sollte angenommen werden
    GUICtrlSetImage(-1, $Pfad & "/" & Eval("Name" & $i), 0)
    ElseIf StringRight(Eval("Name" & $i), 4) = ".bmp" Then ;Bild der bildatei sollte angenommen werden
    GUICtrlSetImage(-1, $Pfad & "/" & Eval("Name" & $i), 0)
    ElseIf StringRight(Eval("Name" & $i), 4) = ".jpg" Then
    GUICtrlSetImage(-1, $Pfad & "/" & Eval("Name" & $i), 0)
    ElseIf Eval("Name" & $i) ="" Then
    GUICtrlSetState (Eval("Button"&$i), $GUI_HIDE )

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

    ElseIf StringInStr(StringRight(Eval("Name" & $i), 5), ".") = 0 Then
    GUICtrlSetImage(-1, "C:\WINDOWS\system32\SHELL32.dll", 5)
    Else
    GUICtrlSetImage(-1, _FileGetIcon($Pfad & "/" & Eval("Name" & $i)), 1)
    EndIf
    GUICtrlSetCursor(-1, 0)
    Assign("Label" & $i, GUICtrlCreateLabel(Eval("Name" & $i), 40, $y, 829, 36))
    $y += 40
    Next

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

    $Next = GUICtrlCreateButton("Nächste Seite", 592, 496, 121, 33, 0)
    GUICtrlSetCursor(-1, 0)

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Next
    GUIDelete($Form1)
    $zaeler = $zaeler + 15
    ExitLoop

    EndSwitch
    WEnd
    Next
    ;_Filegeticon gibt den Pfad zu der ausführenden Exedatei zurück, als paramter muss noch die der iconindex 1 angegeben werden.
    Func _FileGetIcon($szFile)
    Local $arTemp, $sExt, $arPath
    $arTemp = StringSplit($szFile, '.')
    $sExt = '.' & $arTemp[$arTemp[0]]
    If StringLower($sExt) = '.exe' Then Return $szFile
    $arPath = StringRegExp(RegRead("HKCR\" & RegRead("HKCR\" & $sExt, "") & "\shell\open\command", ""), "(.*)(?i)exe", 2)
    If IsArray($arPath) Then
    Return StringReplace($arPath[0], '"', '')
    Else
    ;unknown...
    Return "shell32.dll"
    EndIf
    EndFunc ;==>_FileGetIcon

    [/autoit]
  • Also: Ich schreibe jetzt mal alles auf :) :

    Erstmal: Schönes Projekt! :thumbup:
    Wenn ich versuche die Seite zu schließen, öffnen sich erste einmal 5 neue, liegt wahrscheinlich daran, dass das in einer Schleife drin ist.
    Beim Anklicken von Symbolen passiert nichts, aber allgemein die Symbole von Win zu benutzen ist toll :D
    (steht ja schon in deiner Todo-List ;) )
    Tipp: Geht da ShellExecute nicht suoer, wenn es sich nicht um einen Ordner handelt?

    Tipp:
    Das hier

    [autoit]

    $Form1 = GUICreate("Seite" & $ii, 874, 652, 191, 132)

    [/autoit]


    würde ich in

    [autoit]

    $Form1 = GUICreate("Seite" & $ii, 874, 652, -1, -2)

    [/autoit]


    das verändern, dann ist es nicht so schlimm mit dem rumschieben :D

    Mein Wunsch wäre, wenn du das mit colums machen kannst, wie im exhtem Explorer. Was ein zweiter Wunsch wäre, wäre, wenn du den erweiterbar machst :D

    Das wäre Super! Für den Anfang ist das Projekt wirklich super, und es verdient sich Version 1.0.0 zu nennen! 8o

    Das verlinken mit den Buttons ist aber glaube ich das wichtigste für Version 1.5.0 oder so :D

    Weiter so! ;)