Explorer in GUI

  • Möchte ein Explorer-Fenster in eine GUI stecken und nur bestimmte Dateitypen zB. jpg; png; gif; ico; php; html; htm; css; txt anzeigen.
    Das ganze sollte umschaltbar in der Ansicht werden. von Listen-Ansicht auf Miniatur-Ansicht ohne Verzeichnisbaum.
    Bei Suchbegiffe eingeben und Explorer findet er gar nichts immer nur den IE. Sollte ich diesen dazu verwenden?
    MfG gabischatz

    ico´s zur Datei
    Bilder.zip

    aktuelle au3
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <Constants.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3> ;System-Ereignisse werden includet
    #Include <GuiListView.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Opt("GUIOnEventMode", 0) ; Zum OnEvent-Mode wechseln

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

    HotKeySet("{ESC}", "On_Exit")
    Func On_Exit()
    Exit
    EndFunc

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

    Global $erweiterung= "*.*"
    Global $fileVerz = @ScriptDir
    Global $ListView1,$hListView,$fileName
    Global $GuiWidth = 380, $GuiHeight = 740 ; GUI-Größe
    Dim $Pic_all,$Pic_css,$Pic_gif,$Pic_htm,$Pic_html,$Pic_ico,$Pic_jpg,$Pic_pdf,$Pic_php,$Pic_png,$idClipmenu,$idAllClipmenu

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

    $hGUI = GUICreate("Explorer", $GuiWidth, $GuiHeight, 0, -1, BitOR($WS_POPUP,$WS_BORDER, $WS_EX_TOPMOST )) ; 230, 740, -1, -1)
    $Pic_gif = GUICtrlCreatePic(@ScriptDir& "\gif.gif", 20, 14, 32, 32)
    GUICtrlSetTip(-1, "Dateien anzeigen","gif", 0, 1)
    $Pic_jpg = GUICtrlCreatePic(@ScriptDir& "\jpg.gif", 54, 14, 32, 32)
    GUICtrlSetTip(-1, "Dateien anzeigen","jpg", 0, 1)
    $Pic_png = GUICtrlCreatePic(@ScriptDir & "\png.gif", 88, 14, 32, 32)
    GUICtrlSetTip(-1, "Dateien anzeigen","png", 0, 1)
    $Pic_ico = GUICtrlCreatePic(@ScriptDir & "\ico.gif", 122, 14, 32, 32)
    GUICtrlSetTip(-1, "Dateien anzeigen","ico", 0, 1)
    $Pic_css = GUICtrlCreatePic(@ScriptDir & "\css.gif", 156, 14, 32, 32)
    GUICtrlSetTip(-1, "Dateien anzeigen","css", 0, 1)
    $Pic_htm = GUICtrlCreatePic(@ScriptDir & "\htm.gif", 190, 14, 32, 32)
    GUICtrlSetTip(-1, "Dateien anzeigen","htm", 0, 1)
    $Pic_html = GUICtrlCreatePic(@ScriptDir & "\html.gif", 224, 14, 32, 32)
    GUICtrlSetTip(-1, "Dateien anzeigen","html", 0, 1)
    $Pic_php = GUICtrlCreatePic(@ScriptDir & "\php.gif", 258, 14, 32, 32)
    GUICtrlSetTip(-1, "Dateien anzeigen","php", 0, 1)
    $Pic_pdf = GUICtrlCreatePic(@ScriptDir& "\pdf.gif", 292, 14, 32, 32)
    GUICtrlSetTip(-1, "Dateien anzeigen","pdf", 0, 1)
    $Pic_all = GUICtrlCreatePic(@ScriptDir & "\all.gif", 326, 14, 32, 32)
    GUICtrlSetTip(-1, "Alle Dateien anzeigen","*.*", 0, 1)
    _CreateListView()

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

    $hbtn_ausf = GUICtrlCreateButton("Notepad ausführen", 20, 435, 150)
    $input1 = GUICtrlCreateInput("", 210, 435, 150)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Erlaubt drag&drop

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

    GUISetState (@SW_SHOW, $hGUI)
    _loadfiles($fileVerz,$erweiterung)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;<==============Bemachrichtigung Doppelklick

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

    While (TRUE)
    $msg = GUIGetMsg (FALSE)
    Switch ($msg)
    Case $Pic_all
    _NewCreateListView("*.*")
    Case $Pic_jpg
    _NewCreateListView("*.jpg")
    Case $Pic_png
    _NewCreateListView("*.png")
    Case $Pic_gif
    _NewCreateListView("*.gif")
    Case $Pic_ico
    _NewCreateListView("*.ico")
    Case $Pic_htm
    _NewCreateListView("*.htm")
    Case $Pic_html
    _NewCreateListView("*.*html")
    Case $Pic_php
    _NewCreateListView("*.php")
    Case $Pic_pdf
    _NewCreateListView("*.pdf")
    Case $Pic_css
    _NewCreateListView("*.css")
    Case $hListView
    $fileVerz = FileSelectFolder("Ordner wählen", "")
    _NewCreateListView("*.*")
    Case $idClipmenu
    __GetClipPutFileName()
    Case $idAllClipmenu
    __GetClipPutFilePfad()
    Case $hbtn_ausf
    Run('Notepad.exe') ; Öffnet Notepad
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    Func _CreateListView()
    $ListView1 = GUICtrlCreateListView("Filename |Filetype|height|width ", 20, 55, $GuiWidth - 40, 373)
    _GUICtrlListView_SetBkColor($ListView1, $CLR_MONEYGREEN)
    _GUICtrlListView_SetTextColor($ListView1, $CLR_BLACK)
    _GUICtrlListView_SetTextBkColor($ListView1, $CLR_MONEYGREEN)

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

    GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Erlaubt drag&drop
    $hListView = GUICtrlCreateListViewItem("...", $ListView1)
    $idContextmenu = GUICtrlCreateContextMenu($ListView1)
    $idClipmenu = GUICtrlCreateMenuItem("Kopiere Name", $idContextmenu)
    $idAllClipmenu = GUICtrlCreateMenuItem("Kopieren Pfad", $idContextmenu)
    $idDragmenu = GUICtrlCreateMenuItem("Markiere Auswahl", $idContextmenu)

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

    GUICtrlSetImage($hListView, "shell32.dll", 4)
    EndFunc ;==>CreateListView
    Func _NewCreateListView($aErw)
    GUICtrlDelete($ListView1)
    _CreateListView()
    _loadfiles($fileVerz,$aErw)
    EndFunc ;==>NewCreateListView
    Func _loadfiles($folder,$filestyp)
    $files = _FileListToArray($folder, $filestyp, 1)
    local $szIconFile1, $nIcon1=0,$ListViewItem[UBound($files)]
    If @error Then
    return
    EndIf
    For $i = 1 To UBound($files) - 1
    ;$ListViewItem[$i]=GUICtrlCreateListViewItem($files[$i] & "|" & Int(FileGetSize($files[$i]) / 1024) & "|" & StringRight($files[$i], 3), $ListView1)
    $ListViewItem[$i]=GUICtrlCreateListViewItem($files[$i] & "|" & StringRight($files[$i], 4), $ListView1)
    _FileGetIcon( $szIconFile1, $nIcon1, $folder&$files[$i])
    ;~ If @AutoItVersion > "3.2.5.1" and $nIcon1>0 Then $nIcon1 = -$nIcon1 -1
    GUICtrlSetImage(-1, $szIconFile1, $nIcon1)
    Next

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

    EndFunc ;==>loadfiles

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

    Func _FileGetIcon(ByRef $szIconFile, ByRef $nIcon, $szFile)
    If StringInStr(FileGetAttrib($szIconFile), "D") Then
    $nIcon = 3
    Else
    Dim $szRegDefault = "", $szDefIcon = "", $szExt, $arSplit
    $szExt = StringRight($szFile, 4)
    $szRegDefault = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & $szExt, "ProgID")
    If $szRegDefault = "" Then $szRegDefault = RegRead("HKCR\" & $szExt, "")
    If $szRegDefault <> "" Then $szDefIcon = RegRead("HKCR\" & $szRegDefault & "\DefaultIcon", "")
    If $szDefIcon = "" Then
    $szIconFile = "shell32.dll"
    ElseIf $szDefIcon <> "%1" Then ;SystemRoot%\System32\imageres.dll ist da
    $arSplit = StringSplit($szDefIcon, ",")
    If IsArray($arSplit) Then
    If $arSplit[0] > 1 Then
    $szIconFile = $arSplit[1]
    $nIcon = StringTrimLeft ($arSplit[2],1)
    Else
    Return 0
    EndIf
    EndIf
    EndIf
    EndIf
    Return 1
    EndFunc ;==>_FileGetIcon
    Func __GetFileName ()
    If _GUICtrlListView_GetSelectedCount($ListView1) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($ListView1)
    If _GUICtrlListView_GetItemSelected($ListView1, $i) Then
    $aItem = _GUICtrlListView_GetItemTextArray($ListView1, $i)
    $fileName=$aItem[1]
    ;$fileVerz=StringLower(StringRegExpReplace($fileVerz, "[ ]", "_"))
    ;$fileVerz=StringRegExpReplace($fileVerz, "[\\]", "/")
    ;ConsoleWrite($fileVerz & @CRLF)
    ;ClipPut("file:///"&$fileVerz&"/"&StringLower(StringRegExpReplace($fileName, "[ ]", "_")))
    EndIf
    Next
    EndIf
    Return $fileName
    EndFunc ;==> GetFileName
    Func __GetClipPutFileName()
    __GetFileName ()
    ClipPut(StringLower(StringRegExpReplace($fileName, "[ ]", "_")))
    EndFunc ;==>GetClipPutFileName
    Func __GetClipPutFilePfad()
    $fileVerz=StringLower(StringRegExpReplace($fileVerz, "[ ]", "_"))
    $fileVerz=StringRegExpReplace($fileVerz, "[\\]", "/")
    ClipPut("file:///"&$fileVerz&"/"&StringLower(StringRegExpReplace($fileName, "[ ]", "_")))
    EndFunc ;==>GetClipPutFilePfad

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $ListView1 Then
    ;ConsoleWrite($code & @CRLF)
    Switch $code
    case -2 ;Klick
    __GetClipPutFileName()
    Case -3 ;Doppelklick
    __GetClipPutFilePfad()
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Einmal editiert, zuletzt von gabischatz (1. September 2010 um 22:49) aus folgendem Grund: Datei angehangen und aktualisiert

  • Hi Danke für eure Antworten
    Habe heute mal angefangen mir den Explorer zu erstellen. Bin aber noch nicht sehr weit.
    Leider stürzt er immer ab wenn im Verzeichnis keine entsprechende Datei liegt. :cursing:

    Einmal editiert, zuletzt von gabischatz (1. September 2010 um 22:51)