auswahldialog in gui einbinden

  • Hiho,
    bin ziemlich neu hier - also sry für fehler :S

    mein Frage is ob ich ich einen Auswahldialog, also wie mit der Funktion FileOpenDialog, in eine GUI einbinden kann, so dass kein neues Fenster sich öffnet bei dem ich dann auswählen kann, sondern dass das Auswahldialogfenster in der GUI ist.
    Damit will ich Dateien auswählen und die dann Kopieren.
    Hoffe ihr könnt mir helfen :rolleyes:

    Gruß hulle.

  • aah genau so etwas hab ich gesucht :D

    danke oscar :thumbup:

    aba gibt es auch die möglichkeit dass die Dateien Icons haben wie im Explorer?

    • Offizieller Beitrag

    Du meinst nicht das Standard-Icon, sondern eins passend zum Dateityp, ja?
    Das geht schon, aber...das dauert sehr lange beim einlesen. Ich habe hier schon getrickst (siehe Beitrag zum Script), um überhaupt ein Icon anzeigen zu lassen. Eine Dateityp-Bestimmung für jede Datei dürfte ziemlich zeitaufwendig werden. :huh:

  • Also, ich hätte eine ListView mit den Explorer-Icons, aber nicht als UDF, das müsstest du dir selbst einbauen. (Sollte mal ein FTP-Client werden, hab dann aber aufgehört)

    Spoiler anzeigen
    [autoit]

    Global Const $tagSHFILEINFO = "dword hIcon; int iIcon; DWORD dwAttributes; CHAR szDisplayName[255]; CHAR szTypeName[80];"
    Global Const $SHGFI_USEFILEATTRIBUTES = 0x10
    Global Const $SHGFI_SYSICONINDEX = 0x4000
    Global Const $FILE_ATTRIBUTE_NORMAL = 0x80
    Global Const $SHGFI_SMALLICON = 0x1
    Global Const $SHGFI_LARGEICON = 0x0
    #include <GuiImageList.au3>
    #include <GuiStatusbar.au3>
    #include <GUIListView.au3>
    #include <File.au3>

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

    Global $FOLDER_ICON_INDEX = _GUIImageList_GetFileIconIndex(@SystemDir, 0, 1)
    Global $NOICON_ICON_INDEX = _GUIImageList_GetFileIconIndex("nb lgl", 0, 0)

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <ProgressConstants.au3>
    #include <EditConstants.au3>
    #include <StatusBarConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=D:\Dokumente\Dateien von Andreas\AutoIt3\FTP\GUI_MAIN.kxf
    Global $GUI_MAIN = GUICreate("Au3FTP", 882, 586, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUI_MAINClose")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "GUI_MAINMinimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "GUI_MAINMaximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "GUI_MAINRestore")
    Global $stStatus = _GUICtrlStatusBar_Create($GUI_MAIN)
    Global $stStatus_PartsWidth[2] = [50, 250]
    _GUICtrlStatusBar_SetParts($stStatus, $stStatus_PartsWidth)
    _GUICtrlStatusBar_SetText($stStatus, "Action:", 0)
    _GUICtrlStatusBar_SetText($stStatus, "Fortschritt", 1)
    _GUICtrlStatusBar_SetMinHeight($stStatus, 22)
    Global $inpLocalDirectory = GUICtrlCreateInput("", 8, 28, 369, 20, $ES_READONLY)
    Global $ListView1 = GUICtrlCreateListView("Name|Datum|Größe", 8, 48, 369, 489)
    GUICtrlSendMsg($ListView1, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView1, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView1, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView1, "ListView1Click")
    Global $ListView2 = GUICtrlCreateListView("Name|Datum|Größe", 504, 48, 369, 489)
    GUICtrlSendMsg($ListView2, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView2, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView2, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView2, "ListView2Click")
    Global $Progress1 = GUICtrlCreateProgress(0, 0, 281, 17)
    Global $btnUpload = GUICtrlCreateButton("Upload -==|>", 392, 232, 97, 33, 0)
    GUICtrlSetOnEvent($btnUpload, "btnUploadClick")
    Global $Button2 = GUICtrlCreateButton("<|== Download", 392, 320, 97, 33, 0)
    GUICtrlSetOnEvent($Button2, "Button2Click")
    Global $mnuFile = GUICtrlCreateMenu("&Datei")
    GUICtrlSetOnEvent($mnuFile, "mnuFileClick")
    Global $mnuExit = GUICtrlCreateMenuItem("Beenden", $mnuFile)
    GUICtrlSetOnEvent($mnuExit, "mnuExitClick")
    Global $mnuHelp = GUICtrlCreateMenu("&?")
    GUICtrlSetOnEvent($mnuHelp, "mnuHelpClick")
    Global $mnuOpenHelp = GUICtrlCreateMenuItem("&Hilfe", $mnuHelp)
    GUICtrlSetOnEvent($mnuOpenHelp, "mnuOpenHelpClick")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _GUICtrlStatusBar_EmbedControl($stStatus, 1, GUICtrlGetHandle($Progress1))
    Global $hListView1 = GUICtrlGetHandle($ListView1)
    Global $hListView2 = GUICtrlGetHandle($ListView2)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    _GUICtrlListView_SetImageList($ListView1, _GUIImageList_GetSystemImageList(), 1)
    $DIRECTORY_LOCAL = @ScriptDir
    _PopulateLocalListView($DIRECTORY_LOCAL)
    While 1
    Sleep(100)
    WEnd

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

    Func btnUploadClick()

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

    EndFunc ;==>btnUploadClick
    Func Button2Click()

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

    EndFunc ;==>Button2Click
    Func GUI_MAINClose()
    Exit
    EndFunc ;==>GUI_MAINClose
    Func GUI_MAINMaximize()

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

    EndFunc ;==>GUI_MAINMaximize
    Func GUI_MAINMinimize()

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

    EndFunc ;==>GUI_MAINMinimize
    Func GUI_MAINRestore()

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

    EndFunc ;==>GUI_MAINRestore
    Func ListView1Click()

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

    EndFunc ;==>ListView1Click
    Func ListView2Click()

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

    EndFunc ;==>ListView2Click
    Func mnuExitClick()
    Exit
    EndFunc ;==>mnuExitClick
    Func mnuFileClick()

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

    EndFunc ;==>mnuFileClick
    Func mnuHelpClick()

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

    EndFunc ;==>mnuHelpClick
    Func mnuOpenHelpClick()

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

    EndFunc ;==>mnuOpenHelpClick

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

    Func _PopulateLocalListView(ByRef $DIRECTORY_LOCAL)
    If $DIRECTORY_LOCAL = "" Then
    Local $drives = DriveGetDrive("ALL")
    GUICtrlSetData($inpLocalDirectory, "Drive Selection")
    _GUICtrlListView_BeginUpdate($hListView1)
    _GUICtrlListView_DeleteAllItems($hListView1)
    For $i = 1 To $drives[0]
    _GUICtrlListView_AddItem($hListView1, StringUpper($drives[$i]) & "\", _GUIImageList_GetFileIconIndex($drives[$i] & "\"))
    Next
    _GUICtrlListView_EndUpdate($hListView1)
    Return
    EndIf
    If StringRight($DIRECTORY_LOCAL, 1) <> "\" Then $DIRECTORY_LOCAL &= "\"
    If DriveStatus(StringLeft($DIRECTORY_LOCAL, 3)) <> "READY" Then Return 0 * MsgBox(16 + 8192, 'Error on Drive Access', "Drive " & StringLeft($DIRECTORY_LOCAL, 3) & " not ready!")
    GUICtrlSetData($inpLocalDirectory, $DIRECTORY_LOCAL)
    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 2)
    _GUICtrlListView_BeginUpdate($hListView1)
    _GUICtrlListView_DeleteAllItems($hListView1)
    _GUICtrlListView_AddItem($hListView1, "[..]", 1)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView1, $files[$i], $FOLDER_ICON_INDEX)
    _GUICtrlListView_AddSubItem($hListView1, $item, _FormatFilesize(DirGetSize($DIRECTORY_LOCAL & $files[$i], 2)), 2)
    Next
    EndIf
    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 1)
    _GUICtrlListView_EndUpdate($hListView1)
    _GUICtrlListView_BeginUpdate($hListView1)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView1, $files[$i], _GUIImageList_GetFileIconIndex($files[$i]))
    _GUICtrlListView_AddSubItem($hListView1, $item, _FileDateString2Calc(FileGetTime($DIRECTORY_LOCAL & $files[$i], 0, 1)), 1)
    _GUICtrlListView_AddSubItem($hListView1, $item, _FormatFilesize(FileGetSize($DIRECTORY_LOCAL & $files[$i])), 2)
    Next
    EndIf
    _GUICtrlListView_EndUpdate($hListView1)
    EndFunc ;==>_PopulateLocalListView

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

    Func _FormatFilesize($size)
    Select
    Case $size > 1000
    Return Round($size / 1024, 1) & " KB"
    Case $size > 1048500
    Return Round($size / 1048576, 1) & " MB"
    Case Else
    Return $size & " Byte"
    EndSelect
    EndFunc ;==>_FormatFilesize

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

    Func _GUIImageList_GetSystemImageList($bLargeIcons = False)
    Local $dwFlags, $hIml, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = BitOR($SHGFI_USEFILEATTRIBUTES, $SHGFI_SYSICONINDEX)
    If Not ($bLargeIcons) Then
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf

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

    ;~ '// Load the image list - use an arbitrary file extension for the
    ;~ '// call to SHGetFileInfo (we don't want to touch the disk, so use
    ;~ '// FILE_ATTRIBUTE_NORMAL && SHGFI_USEFILEATTRIBUTES).
    $hIml = _WinAPI_SHGetFileInfo(".txt", $FILE_ATTRIBUTE_NORMAL, _
    DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), $dwFlags)

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

    Return $hIml
    EndFunc ;==>_GUIImageList_GetSystemImageList

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

    Func _WinAPI_SHGetFileInfo($pszPath, $dwFileAttributes, $psfi, $cbFileInfo, $uFlags)
    Local $return = DllCall("shell32.dll", "DWORD*", "SHGetFileInfo", "str", $pszPath, "DWORD", $dwFileAttributes, "ptr", $psfi, "UINT", $cbFileInfo, "UINT", $uFlags)
    If @error Then Return SetError(@error, 0, 0)
    Return $return[0]
    EndFunc ;==>_WinAPI_SHGetFileInfo

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

    Func _GUIImageList_GetFileIconIndex($sFileSpec, $bLargeIcons = False, $bForceLoadFromDisk = False)
    Local $dwFlags, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = $SHGFI_SYSICONINDEX
    If $bLargeIcons Then
    $dwFlags = BitOR($dwFlags, $SHGFI_LARGEICON)
    Else
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf
    ;~ ' We choose whether to access the disk or not. If you don't
    ;~ ' hit the disk, you may get the wrong icon if the icon is
    ;~ ' not cached. But the speed is very good!
    If Not $bForceLoadFromDisk Then
    $dwFlags = BitOR($dwFlags, $SHGFI_USEFILEATTRIBUTES)
    EndIf

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

    ;~ ' sFileSpec can be any file. You can specify a
    ;~ ' file that does not exist and still get the
    ;~ ' icon, for example sFileSpec = "C:\PANTS.DOC"
    Local $lR = _WinAPI_SHGetFileInfo( _
    $sFileSpec, $FILE_ATTRIBUTE_NORMAL, DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), _
    $dwFlags _
    )

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

    If ($lR = 0) Then
    Return SetError(1, 0, -1)
    Else
    Return DllStructGetData($FileInfo, "iIcon")
    EndIf
    EndFunc ;==>_GUIImageList_GetFileIconIndex

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

    ; Author(s): Prog@ndy
    Func _FileDateString2Calc($filedate)
    Return StringRegExpReplace($filedate, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$1/$2/$3 $4:$5:$6")
    EndFunc ;==>_FileDateString2Calc
    ; Author(s): Prog@ndy
    Func _CalcDate2FileDateString($calcdate)
    Return StringRegExpReplace($calcdate, "(\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2})", "$1$2$3$4$5$6")
    EndFunc ;==>_CalcDate2FileDateString

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hListView1
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    ;~ _DebugPrint("$LVN_COLUMNCLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
    ;~ _GUICtrlListView_SimpleSort($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    ; No return value
    Case $LVN_KEYDOWN ; A key has been pressed
    $tInfo = DllStructCreate($tagNMLVKEYDOWN, $ilParam)
    ;~ _DebugPrint("$LVN_KEYDOWN" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->VKey:" & @TAB & DllStructGetData($tInfo, "VKey") & @LF & _
    ;~ "-->Flags:" & @TAB & DllStructGetData($tInfo, "Flags"))
    ; No return value
    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    ;~ _DebugPrint("$NM_CLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    ;~ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; No return value
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    ;~ _DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    ;~ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ConsoleWrite("lll" & @CRLF)
    If _GUICtrlListView_GetItemImage($hListView1, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
    $DIRECTORY_LOCAL &= _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL)
    ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL)
    ElseIf _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index")) = "[..]" Then
    Local $slash = StringInStr($DIRECTORY_LOCAL, "\", 1, -2)
    If $slash Then
    $DIRECTORY_LOCAL = StringLeft($DIRECTORY_LOCAL, $slash)
    ElseIf StringRegExp($DIRECTORY_LOCAL, "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = ""
    EndIf
    _PopulateLocalListView($DIRECTORY_LOCAL)
    EndIf
    ; No return value
    Case $NM_KILLFOCUS ; The control has lost the input focus
    ;~ _DebugPrint("$NM_KILLFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode)
    ; No return value
    Case $NM_RCLICK ; Sent by a list-view control when the user clicks an item with the right mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    ;~ _DebugPrint("$NM_RCLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    ;~ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ;Return 1 ; not to allow the default processing
    Return 0 ; allow the default processing
    Case $NM_RDBLCLK ; Sent by a list-view control when the user double-clicks an item with the right mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    ;~ _DebugPrint("$NM_RDBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode & @LF & _
    ;~ "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
    ;~ "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
    ;~ "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
    ;~ "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
    ;~ "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
    ;~ "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
    ;~ "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
    ;~ "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
    ;~ "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
    ; No return value
    Case $NM_RETURN ; The control has the input focus and that the user has pressed the ENTER key
    ;~ _DebugPrint("$NM_RETURN" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode)
    ; No return value
    Case $NM_SETFOCUS ; The control has received the input focus
    ;~ _DebugPrint("$NM_SETFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
    ;~ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
    ;~ "-->Code:" & @TAB & $iCode)
    ; No return value
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]
  • hab ich mir schon gedacht, dass es sehr zeitaufwändig ist..

    danke progandy :thumbup:

    ich werd des script mal probieren :D

  • Hab das script von progandy mal probiert
    aba jetz is die Frag ob es möglich ist auch im rechten ListView die Daten zu bekommen, so wie im linken ListView
    und sie auch so steuern kann also bsp. wenn eine Taste gedrückt wurde oder wenn mit dem linken Mausbutton drauf geklickt wurde .. 8|

    danke schonmla für euer hilfe :D

  • Das geht schon, du musst nur alle Funktionen für die 2. Listview verdoppeln (in WM_NOTIFY musst du den Case $hListView1 verdoppeln, nicht die Funktion)

  • Hi prograndy
    dass ich alle Funktionen verdoppeln muss, also mit der 2. ListView hab ich schon gedacht und auch probiert.
    Funktioniert auch soweit, dass alle Datein und Ordner angezeigt werden, doch ich kann keine neuen Ordner öffnen, wozu die Funktion WM_NOTIFY ja gut ist.
    Aber das mit Case versteh ich nich . ?(

    könntest du evtl. n Beispiel geben? Wär echt nett :D
    danke soweit :thumbup:
    EDIT: Habs doch hinbekommen eig simpel hab nich gedacht dass ichs hinbekomme :D
    danke progandy!

    Einmal editiert, zuletzt von hulle (10. Februar 2009 um 18:51)

  • OK, WM_NOTIFY gekürtzt. Damit könntest du auch Klick, rechtsklick usw. abfragen (Die Codes sthen ja oben)

    Spoiler anzeigen
    [autoit]

    Global Const $tagSHFILEINFO = "dword hIcon; int iIcon; DWORD dwAttributes; CHAR szDisplayName[255]; CHAR szTypeName[80];"
    Global Const $SHGFI_USEFILEATTRIBUTES = 0x10
    Global Const $SHGFI_SYSICONINDEX = 0x4000
    Global Const $FILE_ATTRIBUTE_NORMAL = 0x80
    Global Const $SHGFI_SMALLICON = 0x1
    Global Const $SHGFI_LARGEICON = 0x0
    #include <GuiImageList.au3>
    #include <GuiStatusbar.au3>
    #include <GUIListView.au3>
    #include <File.au3>

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

    Global $FOLDER_ICON_INDEX = _GUIImageList_GetFileIconIndex(@SystemDir, 0, 1)
    Global $NOICON_ICON_INDEX = _GUIImageList_GetFileIconIndex("nb lgl", 0, 0)

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <ProgressConstants.au3>
    #include <EditConstants.au3>
    #include <StatusBarConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=D:\Dokumente\Dateien von Andreas\AutoIt3\FTP\GUI_MAIN.kxf
    Global $GUI_MAIN = GUICreate("Au3FTP", 882, 586, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUI_MAINClose")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "GUI_MAINMinimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "GUI_MAINMaximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "GUI_MAINRestore")
    Global $stStatus = _GUICtrlStatusBar_Create($GUI_MAIN)
    Global $stStatus_PartsWidth[2] = [50, 250]
    _GUICtrlStatusBar_SetParts($stStatus, $stStatus_PartsWidth)
    _GUICtrlStatusBar_SetText($stStatus, "Action:", 0)
    _GUICtrlStatusBar_SetText($stStatus, "Fortschritt", 1)
    _GUICtrlStatusBar_SetMinHeight($stStatus, 22)
    Global $inpLocalDirectory = GUICtrlCreateInput("", 8, 28, 369, 20, $ES_READONLY)
    Global $ListView1 = GUICtrlCreateListView("Name|Datum|Größe", 8, 48, 369, 489)
    GUICtrlSendMsg($ListView1, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView1, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView1, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView1, "ListView1Click")

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

    Global $inpLV2Directory = GUICtrlCreateInput("", 504, 28, 369, 20, $ES_READONLY) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Global $ListView2 = GUICtrlCreateListView("Name|Datum|Größe", 504, 48, 369, 489)
    GUICtrlSendMsg($ListView2, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView2, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView2, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView2, "ListView2Click")
    Global $Progress1 = GUICtrlCreateProgress(0, 0, 281, 17)
    Global $btnUpload = GUICtrlCreateButton("Upload -==|>", 392, 232, 97, 33, 0)
    GUICtrlSetOnEvent($btnUpload, "btnUploadClick")
    Global $Button2 = GUICtrlCreateButton("<|== Download", 392, 320, 97, 33, 0)
    GUICtrlSetOnEvent($Button2, "Button2Click")
    Global $mnuFile = GUICtrlCreateMenu("&Datei")
    GUICtrlSetOnEvent($mnuFile, "mnuFileClick")
    Global $mnuExit = GUICtrlCreateMenuItem("Beenden", $mnuFile)
    GUICtrlSetOnEvent($mnuExit, "mnuExitClick")
    Global $mnuHelp = GUICtrlCreateMenu("&?")
    GUICtrlSetOnEvent($mnuHelp, "mnuHelpClick")
    Global $mnuOpenHelp = GUICtrlCreateMenuItem("&Hilfe", $mnuHelp)
    GUICtrlSetOnEvent($mnuOpenHelp, "mnuOpenHelpClick")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _GUICtrlStatusBar_EmbedControl($stStatus, 1, GUICtrlGetHandle($Progress1))
    Global $hListView1 = GUICtrlGetHandle($ListView1)
    Global $hListView2 = GUICtrlGetHandle($ListView2)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    _GUICtrlListView_SetImageList($ListView1, _GUIImageList_GetSystemImageList(), 1)
    _GUICtrlListView_SetImageList($ListView2, _GUIImageList_GetSystemImageList(), 1)
    $DIRECTORY_LOCAL = @ScriptDir

    _PopulateLocalListView($DIRECTORY_LOCAL,$hListView1,$inpLocalDirectory)

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

    $DIRECTORY_LV2 = @DesktopDir ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    _PopulateLocalListView($DIRECTORY_LV2,$hListView2,$inpLV2Directory) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

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

    While 1
    Sleep(100)
    WEnd

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

    Func btnUploadClick()

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

    EndFunc ;==>btnUploadClick
    Func Button2Click()

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

    EndFunc ;==>Button2Click
    Func GUI_MAINClose()
    Exit
    EndFunc ;==>GUI_MAINClose
    Func GUI_MAINMaximize()

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

    EndFunc ;==>GUI_MAINMaximize
    Func GUI_MAINMinimize()

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

    EndFunc ;==>GUI_MAINMinimize
    Func GUI_MAINRestore()

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

    EndFunc ;==>GUI_MAINRestore
    Func ListView1Click()

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

    EndFunc ;==>ListView1Click
    Func ListView2Click()

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

    EndFunc ;==>ListView2Click
    Func mnuExitClick()
    Exit
    EndFunc ;==>mnuExitClick
    Func mnuFileClick()

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

    EndFunc ;==>mnuFileClick
    Func mnuHelpClick()

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

    EndFunc ;==>mnuHelpClick
    Func mnuOpenHelpClick()

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

    EndFunc ;==>mnuOpenHelpClick

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

    Func _PopulateLocalListView(ByRef $DIRECTORY_LOCAL, $hListView, $Input);<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    If $DIRECTORY_LOCAL = "" Then
    Local $drives = DriveGetDrive("ALL")
    GUICtrlSetData($Input, "Drive Selection")
    _GUICtrlListView_BeginUpdate($hListView)
    _GUICtrlListView_DeleteAllItems($hListView)
    For $i = 1 To $drives[0]
    _GUICtrlListView_AddItem($hListView, StringUpper($drives[$i]) & "\", _GUIImageList_GetFileIconIndex($drives[$i] & "\"))
    Next
    _GUICtrlListView_EndUpdate($hListView)
    Return
    EndIf
    If StringRight($DIRECTORY_LOCAL, 1) <> "\" Then $DIRECTORY_LOCAL &= "\"
    If DriveStatus(StringLeft($DIRECTORY_LOCAL, 3)) <> "READY" Then Return 0 * MsgBox(16 + 8192, 'Error on Drive Access', "Drive " & StringLeft($DIRECTORY_LOCAL, 3) & " not ready!")
    GUICtrlSetData($Input, $DIRECTORY_LOCAL) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 2)
    _GUICtrlListView_BeginUpdate($hListView)
    _GUICtrlListView_DeleteAllItems($hListView)
    _GUICtrlListView_AddItem($hListView, "[..]", 1)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView, $files[$i], $FOLDER_ICON_INDEX)
    _GUICtrlListView_AddSubItem($hListView, $item, _FormatFilesize(DirGetSize($DIRECTORY_LOCAL & $files[$i], 2)), 2)
    Next
    EndIf
    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 1)
    _GUICtrlListView_EndUpdate($hListView)
    _GUICtrlListView_BeginUpdate($hListView)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView, $files[$i], _GUIImageList_GetFileIconIndex($files[$i]))
    _GUICtrlListView_AddSubItem($hListView, $item, _FileDateString2Calc(FileGetTime($DIRECTORY_LOCAL & $files[$i], 0, 1)), 1)
    _GUICtrlListView_AddSubItem($hListView, $item, _FormatFilesize(FileGetSize($DIRECTORY_LOCAL & $files[$i])), 2)
    Next
    EndIf
    _GUICtrlListView_EndUpdate($hListView)
    EndFunc ;==>_PopulateLocalListView

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

    Func _FormatFilesize($size)
    Select
    Case $size > 1000
    Return Round($size / 1024, 1) & " KB"
    Case $size > 1048500
    Return Round($size / 1048576, 1) & " MB"
    Case Else
    Return $size & " Byte"
    EndSelect
    EndFunc ;==>_FormatFilesize

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

    Func _GUIImageList_GetSystemImageList($bLargeIcons = False)
    Local $dwFlags, $hIml, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = BitOR($SHGFI_USEFILEATTRIBUTES, $SHGFI_SYSICONINDEX)
    If Not ($bLargeIcons) Then
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf

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

    ;~ '// Load the image list - use an arbitrary file extension for the
    ;~ '// call to SHGetFileInfo (we don't want to touch the disk, so use
    ;~ '// FILE_ATTRIBUTE_NORMAL && SHGFI_USEFILEATTRIBUTES).
    $hIml = _WinAPI_SHGetFileInfo(".txt", $FILE_ATTRIBUTE_NORMAL, _
    DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), $dwFlags)

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

    Return $hIml
    EndFunc ;==>_GUIImageList_GetSystemImageList

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

    Func _WinAPI_SHGetFileInfo($pszPath, $dwFileAttributes, $psfi, $cbFileInfo, $uFlags)
    Local $return = DllCall("shell32.dll", "DWORD*", "SHGetFileInfo", "str", $pszPath, "DWORD", $dwFileAttributes, "ptr", $psfi, "UINT", $cbFileInfo, "UINT", $uFlags)
    If @error Then Return SetError(@error, 0, 0)
    Return $return[0]
    EndFunc ;==>_WinAPI_SHGetFileInfo

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

    Func _GUIImageList_GetFileIconIndex($sFileSpec, $bLargeIcons = False, $bForceLoadFromDisk = False)
    Local $dwFlags, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = $SHGFI_SYSICONINDEX
    If $bLargeIcons Then
    $dwFlags = BitOR($dwFlags, $SHGFI_LARGEICON)
    Else
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf
    ;~ ' We choose whether to access the disk or not. If you don't
    ;~ ' hit the disk, you may get the wrong icon if the icon is
    ;~ ' not cached. But the speed is very good!
    If Not $bForceLoadFromDisk Then
    $dwFlags = BitOR($dwFlags, $SHGFI_USEFILEATTRIBUTES)
    EndIf

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

    ;~ ' sFileSpec can be any file. You can specify a
    ;~ ' file that does not exist and still get the
    ;~ ' icon, for example sFileSpec = "C:\PANTS.DOC"
    Local $lR = _WinAPI_SHGetFileInfo( _
    $sFileSpec, $FILE_ATTRIBUTE_NORMAL, DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), _
    $dwFlags _
    )

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

    If ($lR = 0) Then
    Return SetError(1, 0, -1)
    Else
    Return DllStructGetData($FileInfo, "iIcon")
    EndIf
    EndFunc ;==>_GUIImageList_GetFileIconIndex

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

    ; Author(s): Prog@ndy
    Func _FileDateString2Calc($filedate)
    Return StringRegExpReplace($filedate, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$1/$2/$3 $4:$5:$6")
    EndFunc ;==>_FileDateString2Calc
    ; Author(s): Prog@ndy
    Func _CalcDate2FileDateString($calcdate)
    Return StringRegExpReplace($calcdate, "(\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2})", "$1$2$3$4$5$6")
    EndFunc ;==>_CalcDate2FileDateString

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hListView1
    Switch $iCode

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

    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)

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

    ConsoleWrite("lll" & @CRLF)
    If _GUICtrlListView_GetItemImage($hListView1, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
    $DIRECTORY_LOCAL &= _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL,$hListView1,$inpLocalDirectory)
    ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL,$hListView1,$inpLocalDirectory)
    ElseIf _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index")) = "[..]" Then
    Local $slash = StringInStr($DIRECTORY_LOCAL, "\", 1, -2)
    If $slash Then
    $DIRECTORY_LOCAL = StringLeft($DIRECTORY_LOCAL, $slash)
    ElseIf StringRegExp($DIRECTORY_LOCAL, "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = ""
    EndIf
    _PopulateLocalListView($DIRECTORY_LOCAL,$hListView1,$inpLocalDirectory)
    EndIf
    ; No return value
    EndSwitch
    ;\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--
    Case $hListView2
    Switch $iCode

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

    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)

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

    ConsoleWrite("222" & @CRLF)
    If _GUICtrlListView_GetItemImage($hListView2, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
    $DIRECTORY_LV2 &= _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LV2,$hListView2,$inpLV2Directory)
    ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LV2 = _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LV2,$hListView2,$inpLV2Directory)
    ElseIf _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index")) = "[..]" Then
    Local $slash = StringInStr($DIRECTORY_LV2, "\", 1, -2)
    If $slash Then
    $DIRECTORY_LV2 = StringLeft($DIRECTORY_LV2, $slash)
    ElseIf StringRegExp($DIRECTORY_LV2, "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LV2 = ""
    EndIf
    _PopulateLocalListView($DIRECTORY_LV2,$hListView2,$inpLV2Directory)
    EndIf
    ; No return value
    EndSwitch
    ;/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    //Edit: schön, dass du es hinbekommen hast. Kannst ja mal beide Ansätze vergleichen ;)

  • Hab mal beide Ansätze verglichen und dein Ansatz war besser :whistling: :D

    Aber jetz hab ich noch ne andere Frage und zwar wird bei jedem ListView ein Ordner erstellt, der "[..]" heißt. Ich denk mal es soll eine Zurück-Funktion sein, doch leider funktioniert es nicht bei mir.
    Funktioniert es bei dir?

  • hmn komisch .. ?(

    Bei mir wird es ganz normal als Ordner behandelt und schreibt dann ins input beispielsweiße "C:\[..]" und zeigt dann n leeres ListView.
    naja werd ich nochmal probieren
    vll mit Button.
    Trotzdem Danke :thumbup:

  • Hmm, warscheinlich leigt das am Ordner-Icon, das bei euch auf Position 0 sitzt Bei mir ist da das Verknüpfungssybol. ... Muss mal die Abfrage umbauen ;)

    Spoiler anzeigen
    [autoit]

    Global Const $tagSHFILEINFO = "dword hIcon; int iIcon; DWORD dwAttributes; CHAR szDisplayName[255]; CHAR szTypeName[80];"
    Global Const $SHGFI_USEFILEATTRIBUTES = 0x10
    Global Const $SHGFI_SYSICONINDEX = 0x4000
    Global Const $FILE_ATTRIBUTE_NORMAL = 0x80
    Global Const $SHGFI_SMALLICON = 0x1
    Global Const $SHGFI_LARGEICON = 0x0
    #include <GuiImageList.au3>
    #include <GuiStatusbar.au3>
    #include <GUIListView.au3>
    #include <File.au3>

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

    Global $FOLDER_ICON_INDEX = _GUIImageList_GetFileIconIndex(@SystemDir, 0, 1)
    Global $NOICON_ICON_INDEX = _GUIImageList_GetFileIconIndex("nb lgl", 0, 0)

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <ProgressConstants.au3>
    #include <EditConstants.au3>
    #include <StatusBarConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=D:\Dokumente\Dateien von Andreas\AutoIt3\FTP\GUI_MAIN.kxf
    Global $GUI_MAIN = GUICreate("Au3FTP", 882, 586, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUI_MAINClose")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "GUI_MAINMinimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "GUI_MAINMaximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "GUI_MAINRestore")
    Global $stStatus = _GUICtrlStatusBar_Create($GUI_MAIN)
    Global $stStatus_PartsWidth[2] = [50, 250]
    _GUICtrlStatusBar_SetParts($stStatus, $stStatus_PartsWidth)
    _GUICtrlStatusBar_SetText($stStatus, "Action:", 0)
    _GUICtrlStatusBar_SetText($stStatus, "Fortschritt", 1)
    _GUICtrlStatusBar_SetMinHeight($stStatus, 22)
    Global $inpLocalDirectory = GUICtrlCreateInput("", 8, 28, 369, 20, $ES_READONLY)
    Global $ListView1 = GUICtrlCreateListView("Name|Datum|Größe", 8, 48, 369, 489)
    GUICtrlSendMsg($ListView1, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView1, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView1, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView1, "ListView1Click")

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

    Global $inpLV2Directory = GUICtrlCreateInput("", 504, 28, 369, 20, $ES_READONLY) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Global $ListView2 = GUICtrlCreateListView("Name|Datum|Größe", 504, 48, 369, 489)
    GUICtrlSendMsg($ListView2, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView2, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView2, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView2, "ListView2Click")
    Global $Progress1 = GUICtrlCreateProgress(0, 0, 281, 17)
    Global $btnUpload = GUICtrlCreateButton("Upload -==|>", 392, 232, 97, 33, 0)
    GUICtrlSetOnEvent($btnUpload, "btnUploadClick")
    Global $Button2 = GUICtrlCreateButton("<|== Download", 392, 320, 97, 33, 0)
    GUICtrlSetOnEvent($Button2, "Button2Click")
    Global $mnuFile = GUICtrlCreateMenu("&Datei")
    GUICtrlSetOnEvent($mnuFile, "mnuFileClick")
    Global $mnuExit = GUICtrlCreateMenuItem("Beenden", $mnuFile)
    GUICtrlSetOnEvent($mnuExit, "mnuExitClick")
    Global $mnuHelp = GUICtrlCreateMenu("&?")
    GUICtrlSetOnEvent($mnuHelp, "mnuHelpClick")
    Global $mnuOpenHelp = GUICtrlCreateMenuItem("&Hilfe", $mnuHelp)
    GUICtrlSetOnEvent($mnuOpenHelp, "mnuOpenHelpClick")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _GUICtrlStatusBar_EmbedControl($stStatus, 1, GUICtrlGetHandle($Progress1))
    Global $hListView1 = GUICtrlGetHandle($ListView1)
    Global $hListView2 = GUICtrlGetHandle($ListView2)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    _GUICtrlListView_SetImageList($ListView1, _GUIImageList_GetSystemImageList(), 1)
    _GUICtrlListView_SetImageList($ListView2, _GUIImageList_GetSystemImageList(), 1)
    $DIRECTORY_LOCAL = @ScriptDir

    _PopulateLocalListView($DIRECTORY_LOCAL,$hListView1,$inpLocalDirectory)

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

    $DIRECTORY_LV2 = @DesktopDir ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    _PopulateLocalListView($DIRECTORY_LV2,$hListView2,$inpLV2Directory) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

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

    While 1
    Sleep(100)
    WEnd

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

    Func btnUploadClick()

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

    EndFunc ;==>btnUploadClick
    Func Button2Click()

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

    EndFunc ;==>Button2Click
    Func GUI_MAINClose()
    Exit
    EndFunc ;==>GUI_MAINClose
    Func GUI_MAINMaximize()

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

    EndFunc ;==>GUI_MAINMaximize
    Func GUI_MAINMinimize()

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

    EndFunc ;==>GUI_MAINMinimize
    Func GUI_MAINRestore()

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

    EndFunc ;==>GUI_MAINRestore
    Func ListView1Click()

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

    EndFunc ;==>ListView1Click
    Func ListView2Click()

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

    EndFunc ;==>ListView2Click
    Func mnuExitClick()
    Exit
    EndFunc ;==>mnuExitClick
    Func mnuFileClick()

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

    EndFunc ;==>mnuFileClick
    Func mnuHelpClick()

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

    EndFunc ;==>mnuHelpClick
    Func mnuOpenHelpClick()

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

    EndFunc ;==>mnuOpenHelpClick

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

    Func _PopulateLocalListView(ByRef $DIRECTORY_LOCAL, $hListView, $Input);<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    If $DIRECTORY_LOCAL = "" Then
    Local $drives = DriveGetDrive("ALL")
    GUICtrlSetData($Input, "Drive Selection")
    _GUICtrlListView_BeginUpdate($hListView)
    _GUICtrlListView_DeleteAllItems($hListView)
    For $i = 1 To $drives[0]
    _GUICtrlListView_AddItem($hListView, StringUpper($drives[$i]) & "\", _GUIImageList_GetFileIconIndex($drives[$i] & "\"))
    Next
    _GUICtrlListView_EndUpdate($hListView)
    Return
    EndIf
    If StringRight($DIRECTORY_LOCAL, 1) <> "\" Then $DIRECTORY_LOCAL &= "\"
    If DriveStatus(StringLeft($DIRECTORY_LOCAL, 3)) <> "READY" Then Return 0 * MsgBox(16 + 8192, 'Error on Drive Access', "Drive " & StringLeft($DIRECTORY_LOCAL, 3) & " not ready!")
    GUICtrlSetData($Input, $DIRECTORY_LOCAL) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 2)
    _GUICtrlListView_BeginUpdate($hListView)
    _GUICtrlListView_DeleteAllItems($hListView)
    _GUICtrlListView_AddItem($hListView, "\..", 1)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView, $files[$i], $FOLDER_ICON_INDEX)
    _GUICtrlListView_AddSubItem($hListView, $item, _FormatFilesize(DirGetSize($DIRECTORY_LOCAL & $files[$i], 2)), 2)
    Next
    EndIf
    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 1)
    _GUICtrlListView_EndUpdate($hListView)
    _GUICtrlListView_BeginUpdate($hListView)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView, $files[$i], _GUIImageList_GetFileIconIndex($files[$i]))
    _GUICtrlListView_AddSubItem($hListView, $item, _FileDateString2Calc(FileGetTime($DIRECTORY_LOCAL & $files[$i], 0, 1)), 1)
    _GUICtrlListView_AddSubItem($hListView, $item, _FormatFilesize(FileGetSize($DIRECTORY_LOCAL & $files[$i])), 2)
    Next
    EndIf
    _GUICtrlListView_EndUpdate($hListView)
    EndFunc ;==>_PopulateLocalListView

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

    Func _FormatFilesize($size)
    Select
    Case $size > 1000
    Return Round($size / 1024, 1) & " KB"
    Case $size > 1048500
    Return Round($size / 1048576, 1) & " MB"
    Case Else
    Return $size & " Byte"
    EndSelect
    EndFunc ;==>_FormatFilesize

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

    Func _GUIImageList_GetSystemImageList($bLargeIcons = False)
    Local $dwFlags, $hIml, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = BitOR($SHGFI_USEFILEATTRIBUTES, $SHGFI_SYSICONINDEX)
    If Not ($bLargeIcons) Then
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf

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

    ;~ '// Load the image list - use an arbitrary file extension for the
    ;~ '// call to SHGetFileInfo (we don't want to touch the disk, so use
    ;~ '// FILE_ATTRIBUTE_NORMAL && SHGFI_USEFILEATTRIBUTES).
    $hIml = _WinAPI_SHGetFileInfo(".txt", $FILE_ATTRIBUTE_NORMAL, _
    DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), $dwFlags)

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

    Return $hIml
    EndFunc ;==>_GUIImageList_GetSystemImageList

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

    Func _WinAPI_SHGetFileInfo($pszPath, $dwFileAttributes, $psfi, $cbFileInfo, $uFlags)
    Local $return = DllCall("shell32.dll", "DWORD*", "SHGetFileInfo", "str", $pszPath, "DWORD", $dwFileAttributes, "ptr", $psfi, "UINT", $cbFileInfo, "UINT", $uFlags)
    If @error Then Return SetError(@error, 0, 0)
    Return $return[0]
    EndFunc ;==>_WinAPI_SHGetFileInfo

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

    Func _GUIImageList_GetFileIconIndex($sFileSpec, $bLargeIcons = False, $bForceLoadFromDisk = False)
    Local $dwFlags, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = $SHGFI_SYSICONINDEX
    If $bLargeIcons Then
    $dwFlags = BitOR($dwFlags, $SHGFI_LARGEICON)
    Else
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf
    ;~ ' We choose whether to access the disk or not. If you don't
    ;~ ' hit the disk, you may get the wrong icon if the icon is
    ;~ ' not cached. But the speed is very good!
    If Not $bForceLoadFromDisk Then
    $dwFlags = BitOR($dwFlags, $SHGFI_USEFILEATTRIBUTES)
    EndIf

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

    ;~ ' sFileSpec can be any file. You can specify a
    ;~ ' file that does not exist and still get the
    ;~ ' icon, for example sFileSpec = "C:\PANTS.DOC"
    Local $lR = _WinAPI_SHGetFileInfo( _
    $sFileSpec, $FILE_ATTRIBUTE_NORMAL, DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), _
    $dwFlags _
    )

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

    If ($lR = 0) Then
    Return SetError(1, 0, -1)
    Else
    Return DllStructGetData($FileInfo, "iIcon")
    EndIf
    EndFunc ;==>_GUIImageList_GetFileIconIndex

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

    ; Author(s): Prog@ndy
    Func _FileDateString2Calc($filedate)
    Return StringRegExpReplace($filedate, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$1/$2/$3 $4:$5:$6")
    EndFunc ;==>_FileDateString2Calc
    ; Author(s): Prog@ndy
    Func _CalcDate2FileDateString($calcdate)
    Return StringRegExpReplace($calcdate, "(\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2})", "$1$2$3$4$5$6")
    EndFunc ;==>_CalcDate2FileDateString

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hListView1
    Switch $iCode

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

    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)

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

    ConsoleWrite("lll" & @CRLF)
    If _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index")) = "\.." Then
    Local $slash = StringInStr($DIRECTORY_LOCAL, "\", 1, -2)
    If $slash Then
    $DIRECTORY_LOCAL = StringLeft($DIRECTORY_LOCAL, $slash)
    ElseIf StringRegExp($DIRECTORY_LOCAL, "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = ""
    EndIf
    _PopulateLocalListView($DIRECTORY_LOCAL,$hListView1,$inpLocalDirectory)
    ElseIf _GUICtrlListView_GetItemImage($hListView1, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
    $DIRECTORY_LOCAL &= _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL,$hListView1,$inpLocalDirectory)
    ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL,$hListView1,$inpLocalDirectory)
    EndIf
    ; No return value
    EndSwitch
    ;\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--
    Case $hListView2
    Switch $iCode

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

    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)

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

    ConsoleWrite("222" & @CRLF)
    If _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index")) = "\.." Then
    Local $slash = StringInStr($DIRECTORY_LV2, "\", 1, -2)
    If $slash Then
    $DIRECTORY_LV2 = StringLeft($DIRECTORY_LV2, $slash)
    ElseIf StringRegExp($DIRECTORY_LV2, "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LV2 = ""
    EndIf
    _PopulateLocalListView($DIRECTORY_LV2,$hListView2,$inpLV2Directory)
    ElseIf _GUICtrlListView_GetItemImage($hListView2, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
    $DIRECTORY_LV2 &= _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LV2,$hListView2,$inpLV2Directory)
    ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LV2 = _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LV2,$hListView2,$inpLV2Directory)
    EndIf
    ; No return value
    EndSwitch
    ;/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    //Edit: Ich war schneller :P

    Einmal editiert, zuletzt von progandy (10. Februar 2009 um 20:54)

    • Offizieller Beitrag

    Ich habe mal die Reihenfolge der Abfrage in WM_NOTIFY geändert jetzt funzt es :

    Spoiler anzeigen
    [autoit]

    Global Const $tagSHFILEINFO = "dword hIcon; int iIcon; DWORD dwAttributes; CHAR szDisplayName[255]; CHAR szTypeName[80];"
    Global Const $SHGFI_USEFILEATTRIBUTES = 0x10
    Global Const $SHGFI_SYSICONINDEX = 0x4000
    Global Const $FILE_ATTRIBUTE_NORMAL = 0x80
    Global Const $SHGFI_SMALLICON = 0x1
    Global Const $SHGFI_LARGEICON = 0x0
    #include <GuiImageList.au3>
    #include <GuiStatusbar.au3>
    #include <GUIListView.au3>
    #include <File.au3>

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

    Global $FOLDER_ICON_INDEX = _GUIImageList_GetFileIconIndex(@SystemDir, 0, 1)
    Global $NOICON_ICON_INDEX = _GUIImageList_GetFileIconIndex("nb lgl", 0, 0)

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <ProgressConstants.au3>
    #include <EditConstants.au3>
    #include <StatusBarConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=D:\Dokumente\Dateien von Andreas\AutoIt3\FTP\GUI_MAIN.kxf
    Global $GUI_MAIN = GUICreate("Au3FTP", 882, 586, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUI_MAINClose")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "GUI_MAINMinimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "GUI_MAINMaximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "GUI_MAINRestore")
    Global $stStatus = _GUICtrlStatusBar_Create($GUI_MAIN)
    Global $stStatus_PartsWidth[2] = [50, 250]
    _GUICtrlStatusBar_SetParts($stStatus, $stStatus_PartsWidth)
    _GUICtrlStatusBar_SetText($stStatus, "Action:", 0)
    _GUICtrlStatusBar_SetText($stStatus, "Fortschritt", 1)
    _GUICtrlStatusBar_SetMinHeight($stStatus, 22)
    Global $inpLocalDirectory = GUICtrlCreateInput("", 8, 28, 369, 20, $ES_READONLY)
    Global $ListView1 = GUICtrlCreateListView("Name|Datum|Größe", 8, 48, 369, 489)
    GUICtrlSendMsg($ListView1, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView1, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView1, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView1, "ListView1Click")

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

    Global $inpLV2Directory = GUICtrlCreateInput("", 504, 28, 369, 20, $ES_READONLY) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Global $ListView2 = GUICtrlCreateListView("Name|Datum|Größe", 504, 48, 369, 489)
    GUICtrlSendMsg($ListView2, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView2, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView2, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView2, "ListView2Click")
    Global $Progress1 = GUICtrlCreateProgress(0, 0, 281, 17)
    Global $btnUpload = GUICtrlCreateButton("Upload -==|>", 392, 232, 97, 33, 0)
    GUICtrlSetOnEvent($btnUpload, "btnUploadClick")
    Global $Button2 = GUICtrlCreateButton("<|== Download", 392, 320, 97, 33, 0)
    GUICtrlSetOnEvent($Button2, "Button2Click")
    Global $mnuFile = GUICtrlCreateMenu("&Datei")
    GUICtrlSetOnEvent($mnuFile, "mnuFileClick")
    Global $mnuExit = GUICtrlCreateMenuItem("Beenden", $mnuFile)
    GUICtrlSetOnEvent($mnuExit, "mnuExitClick")
    Global $mnuHelp = GUICtrlCreateMenu("&?")
    GUICtrlSetOnEvent($mnuHelp, "mnuHelpClick")
    Global $mnuOpenHelp = GUICtrlCreateMenuItem("&Hilfe", $mnuHelp)
    GUICtrlSetOnEvent($mnuOpenHelp, "mnuOpenHelpClick")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _GUICtrlStatusBar_EmbedControl($stStatus, 1, GUICtrlGetHandle($Progress1))
    Global $hListView1 = GUICtrlGetHandle($ListView1)
    Global $hListView2 = GUICtrlGetHandle($ListView2)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    _GUICtrlListView_SetImageList($ListView1, _GUIImageList_GetSystemImageList(), 1)
    _GUICtrlListView_SetImageList($ListView2, _GUIImageList_GetSystemImageList(), 1)
    $DIRECTORY_LOCAL = @ScriptDir

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

    _PopulateLocalListView($DIRECTORY_LOCAL, $hListView1, $inpLocalDirectory)

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

    $DIRECTORY_LV2 = @DesktopDir ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    _PopulateLocalListView($DIRECTORY_LV2, $hListView2, $inpLV2Directory) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

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

    While 1
    Sleep(100)
    WEnd

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

    Func btnUploadClick()

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

    EndFunc ;==>btnUploadClick
    Func Button2Click()

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

    EndFunc ;==>Button2Click
    Func GUI_MAINClose()
    Exit
    EndFunc ;==>GUI_MAINClose
    Func GUI_MAINMaximize()

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

    EndFunc ;==>GUI_MAINMaximize
    Func GUI_MAINMinimize()

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

    EndFunc ;==>GUI_MAINMinimize
    Func GUI_MAINRestore()

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

    EndFunc ;==>GUI_MAINRestore
    Func ListView1Click()

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

    EndFunc ;==>ListView1Click
    Func ListView2Click()

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

    EndFunc ;==>ListView2Click
    Func mnuExitClick()
    Exit
    EndFunc ;==>mnuExitClick
    Func mnuFileClick()

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

    EndFunc ;==>mnuFileClick
    Func mnuHelpClick()

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

    EndFunc ;==>mnuHelpClick
    Func mnuOpenHelpClick()

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

    EndFunc ;==>mnuOpenHelpClick

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

    Func _PopulateLocalListView(ByRef $DIRECTORY_LOCAL, $hListView, $Input);<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    If $DIRECTORY_LOCAL = "" Then
    Local $drives = DriveGetDrive("ALL")
    GUICtrlSetData($Input, "Drive Selection")
    _GUICtrlListView_BeginUpdate($hListView)
    _GUICtrlListView_DeleteAllItems($hListView)
    For $i = 1 To $drives[0]
    _GUICtrlListView_AddItem($hListView, StringUpper($drives[$i]) & "\", _GUIImageList_GetFileIconIndex($drives[$i] & "\"))
    Next
    _GUICtrlListView_EndUpdate($hListView)
    Return
    EndIf
    If StringRight($DIRECTORY_LOCAL, 1) <> "\" Then $DIRECTORY_LOCAL &= "\"
    If DriveStatus(StringLeft($DIRECTORY_LOCAL, 3)) <> "READY" Then Return 0 * MsgBox(16 + 8192, 'Error on Drive Access', "Drive " & StringLeft($DIRECTORY_LOCAL, 3) & " not ready!")
    GUICtrlSetData($Input, $DIRECTORY_LOCAL) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

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

    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 2)
    _GUICtrlListView_BeginUpdate($hListView)
    _GUICtrlListView_DeleteAllItems($hListView)
    _GUICtrlListView_AddItem($hListView, "[..]", 1)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView, $files[$i], $FOLDER_ICON_INDEX)
    _GUICtrlListView_AddSubItem($hListView, $item, _FormatFilesize(DirGetSize($DIRECTORY_LOCAL & $files[$i], 2)), 2)
    Next
    EndIf
    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 1)
    _GUICtrlListView_EndUpdate($hListView)
    _GUICtrlListView_BeginUpdate($hListView)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView, $files[$i], _GUIImageList_GetFileIconIndex($files[$i]))
    _GUICtrlListView_AddSubItem($hListView, $item, _FileDateString2Calc(FileGetTime($DIRECTORY_LOCAL & $files[$i], 0, 1)), 1)
    _GUICtrlListView_AddSubItem($hListView, $item, _FormatFilesize(FileGetSize($DIRECTORY_LOCAL & $files[$i])), 2)
    Next
    EndIf
    _GUICtrlListView_EndUpdate($hListView)
    EndFunc ;==>_PopulateLocalListView

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

    Func _FormatFilesize($size)
    Select
    Case $size > 1000
    Return Round($size / 1024, 1) & " KB"
    Case $size > 1048500
    Return Round($size / 1048576, 1) & " MB"
    Case Else
    Return $size & " Byte"
    EndSelect
    EndFunc ;==>_FormatFilesize

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

    Func _GUIImageList_GetSystemImageList($bLargeIcons = False)
    Local $dwFlags, $hIml, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = BitOR($SHGFI_USEFILEATTRIBUTES, $SHGFI_SYSICONINDEX)
    If Not ($bLargeIcons) Then
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf

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

    ;~ '// Load the image list - use an arbitrary file extension for the
    ;~ '// call to SHGetFileInfo (we don't want to touch the disk, so use
    ;~ '// FILE_ATTRIBUTE_NORMAL && SHGFI_USEFILEATTRIBUTES).
    $hIml = _WinAPI_SHGetFileInfo(".txt", $FILE_ATTRIBUTE_NORMAL, _
    DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), $dwFlags)

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

    Return $hIml
    EndFunc ;==>_GUIImageList_GetSystemImageList

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

    Func _WinAPI_SHGetFileInfo($pszPath, $dwFileAttributes, $psfi, $cbFileInfo, $uFlags)
    Local $return = DllCall("shell32.dll", "DWORD*", "SHGetFileInfo", "str", $pszPath, "DWORD", $dwFileAttributes, "ptr", $psfi, "UINT", $cbFileInfo, "UINT", $uFlags)
    If @error Then Return SetError(@error, 0, 0)
    Return $return[0]
    EndFunc ;==>_WinAPI_SHGetFileInfo

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

    Func _GUIImageList_GetFileIconIndex($sFileSpec, $bLargeIcons = False, $bForceLoadFromDisk = False)
    Local $dwFlags, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = $SHGFI_SYSICONINDEX
    If $bLargeIcons Then
    $dwFlags = BitOR($dwFlags, $SHGFI_LARGEICON)
    Else
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf
    ;~ ' We choose whether to access the disk or not. If you don't
    ;~ ' hit the disk, you may get the wrong icon if the icon is
    ;~ ' not cached. But the speed is very good!
    If Not $bForceLoadFromDisk Then
    $dwFlags = BitOR($dwFlags, $SHGFI_USEFILEATTRIBUTES)
    EndIf

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

    ;~ ' sFileSpec can be any file. You can specify a
    ;~ ' file that does not exist and still get the
    ;~ ' icon, for example sFileSpec = "C:\PANTS.DOC"
    Local $lR = _WinAPI_SHGetFileInfo( _
    $sFileSpec, $FILE_ATTRIBUTE_NORMAL, DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), _
    $dwFlags _
    )

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

    If ($lR = 0) Then
    Return SetError(1, 0, -1)
    Else
    Return DllStructGetData($FileInfo, "iIcon")
    EndIf
    EndFunc ;==>_GUIImageList_GetFileIconIndex

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

    ; Author(s): Prog@ndy
    Func _FileDateString2Calc($filedate)
    Return StringRegExpReplace($filedate, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$1/$2/$3 $4:$5:$6")
    EndFunc ;==>_FileDateString2Calc
    ; Author(s): Prog@ndy
    Func _CalcDate2FileDateString($calcdate)
    Return StringRegExpReplace($calcdate, "(\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2})", "$1$2$3$4$5$6")
    EndFunc ;==>_CalcDate2FileDateString

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hListView1
    Switch $iCode

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

    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)

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

    ConsoleWrite("lll" & @CRLF)
    If _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index")) = "[..]" Then
    Local $slash = StringInStr($DIRECTORY_LOCAL, "\", 1, -2)
    If $slash Then
    $DIRECTORY_LOCAL = StringLeft($DIRECTORY_LOCAL, $slash)
    ElseIf StringRegExp($DIRECTORY_LOCAL, "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = ""
    EndIf
    _PopulateLocalListView($DIRECTORY_LOCAL, $hListView1, $inpLocalDirectory)
    ElseIf _GUICtrlListView_GetItemImage($hListView1, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
    $DIRECTORY_LOCAL &= _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL, $hListView1, $inpLocalDirectory)
    ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL, $hListView1, $inpLocalDirectory)
    MsgBox(0, "", $inpLocalDirectory)
    EndIf
    ; No return value
    EndSwitch
    ;\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--
    Case $hListView2
    Switch $iCode

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

    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)

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

    ConsoleWrite("222" & @CRLF)
    If _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index")) = "[..]" Then
    Local $slash = StringInStr($DIRECTORY_LV2, "\", 1, -2)
    If $slash Then
    $DIRECTORY_LV2 = StringLeft($DIRECTORY_LV2, $slash)
    ElseIf StringRegExp($DIRECTORY_LV2, "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LV2 = ""
    EndIf
    _PopulateLocalListView($DIRECTORY_LV2, $hListView2, $inpLV2Directory)
    ElseIf _GUICtrlListView_GetItemImage($hListView2, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
    $DIRECTORY_LV2 &= _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LV2, $hListView2, $inpLV2Directory)
    ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LV2 = _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LV2, $hListView2, $inpLV2Directory)
    EndIf
    ; No return value
    EndSwitch
    ;/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Edit: @progandy du warst natürlich schneller, ich habe auch nur rumgeraten . :rofl

  • Jetz geht bei beiden Scripten die Zurück-Funktion.

    Spoiler anzeigen
    [autoit]

    Global Const $tagSHFILEINFO = "dword hIcon; int iIcon; DWORD dwAttributes; CHAR szDisplayName[255]; CHAR szTypeName[80];"
    Global Const $SHGFI_USEFILEATTRIBUTES = 0x10
    Global Const $SHGFI_SYSICONINDEX = 0x4000
    Global Const $FILE_ATTRIBUTE_NORMAL = 0x80
    Global Const $SHGFI_SMALLICON = 0x1
    Global Const $SHGFI_LARGEICON = 0x0
    #include <GuiImageList.au3>
    #include <GuiStatusbar.au3>
    #include <GUIListView.au3>
    #include <File.au3>

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

    Global $FOLDER_ICON_INDEX = _GUIImageList_GetFileIconIndex(@SystemDir, 0, 1)
    Global $NOICON_ICON_INDEX = _GUIImageList_GetFileIconIndex("nb lgl", 0, 0)

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <ProgressConstants.au3>
    #include <EditConstants.au3>
    #include <StatusBarConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=D:\Dokumente\Dateien von Andreas\AutoIt3\FTP\GUI_MAIN.kxf
    Global $GUI_MAIN = GUICreate("Au3FTP", 882, 586, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUI_MAINClose")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "GUI_MAINMinimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "GUI_MAINMaximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "GUI_MAINRestore")
    Global $stStatus = _GUICtrlStatusBar_Create($GUI_MAIN)
    Global $stStatus_PartsWidth[2] = [50, 250]
    _GUICtrlStatusBar_SetParts($stStatus, $stStatus_PartsWidth)
    _GUICtrlStatusBar_SetText($stStatus, "Action:", 0)
    _GUICtrlStatusBar_SetText($stStatus, "Fortschritt", 1)
    _GUICtrlStatusBar_SetMinHeight($stStatus, 22)
    Global $inpLocalDirectory = GUICtrlCreateInput("", 8, 28, 369, 20, $ES_READONLY)
    Global $ListView1 = GUICtrlCreateListView("Name|Datum|Größe", 8, 48, 369, 489)
    GUICtrlSendMsg($ListView1, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView1, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView1, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView1, "ListView1Click")

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

    Global $inpLV2Directory = GUICtrlCreateInput("", 504, 28, 369, 20, $ES_READONLY) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Global $ListView2 = GUICtrlCreateListView("Name|Datum|Größe", 504, 48, 369, 489)
    GUICtrlSendMsg($ListView2, 0x101E, 0, 200)
    GUICtrlSendMsg($ListView2, 0x101E, 1, 75)
    GUICtrlSendMsg($ListView2, 0x101E, 2, 50)
    GUICtrlSetOnEvent($ListView2, "ListView2Click")
    Global $Progress1 = GUICtrlCreateProgress(0, 0, 281, 17)
    Global $btnUpload = GUICtrlCreateButton("Upload -==|>", 392, 232, 97, 33, 0)
    GUICtrlSetOnEvent($btnUpload, "btnUploadClick")
    Global $Button2 = GUICtrlCreateButton("<|== Download", 392, 320, 97, 33, 0)
    GUICtrlSetOnEvent($Button2, "Button2Click")
    Global $mnuFile = GUICtrlCreateMenu("&Datei")
    GUICtrlSetOnEvent($mnuFile, "mnuFileClick")
    Global $mnuExit = GUICtrlCreateMenuItem("Beenden", $mnuFile)
    GUICtrlSetOnEvent($mnuExit, "mnuExitClick")
    Global $mnuHelp = GUICtrlCreateMenu("&?")
    GUICtrlSetOnEvent($mnuHelp, "mnuHelpClick")
    Global $mnuOpenHelp = GUICtrlCreateMenuItem("&Hilfe", $mnuHelp)
    GUICtrlSetOnEvent($mnuOpenHelp, "mnuOpenHelpClick")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    _GUICtrlStatusBar_EmbedControl($stStatus, 1, GUICtrlGetHandle($Progress1))
    Global $hListView1 = GUICtrlGetHandle($ListView1)
    Global $hListView2 = GUICtrlGetHandle($ListView2)

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    _GUICtrlListView_SetImageList($ListView1, _GUIImageList_GetSystemImageList(), 1)
    _GUICtrlListView_SetImageList($ListView2, _GUIImageList_GetSystemImageList(), 1)
    $DIRECTORY_LOCAL = @ScriptDir

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

    _PopulateLocalListView($DIRECTORY_LOCAL, $hListView1, $inpLocalDirectory)

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

    $DIRECTORY_LV2 = @DesktopDir ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    _PopulateLocalListView($DIRECTORY_LV2, $hListView2, $inpLV2Directory) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

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

    While 1
    Sleep(100)
    WEnd

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

    Func btnUploadClick()

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

    EndFunc ;==>btnUploadClick
    Func Button2Click()

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

    EndFunc ;==>Button2Click
    Func GUI_MAINClose()
    Exit
    EndFunc ;==>GUI_MAINClose
    Func GUI_MAINMaximize()

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

    EndFunc ;==>GUI_MAINMaximize
    Func GUI_MAINMinimize()

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

    EndFunc ;==>GUI_MAINMinimize
    Func GUI_MAINRestore()

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

    EndFunc ;==>GUI_MAINRestore
    Func ListView1Click()

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

    EndFunc ;==>ListView1Click
    Func ListView2Click()

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

    EndFunc ;==>ListView2Click
    Func mnuExitClick()
    Exit
    EndFunc ;==>mnuExitClick
    Func mnuFileClick()

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

    EndFunc ;==>mnuFileClick
    Func mnuHelpClick()

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

    EndFunc ;==>mnuHelpClick
    Func mnuOpenHelpClick()

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

    EndFunc ;==>mnuOpenHelpClick

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

    Func _PopulateLocalListView(ByRef $DIRECTORY_LOCAL, $hListView, $Input);<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    If $DIRECTORY_LOCAL = "" Then
    Local $drives = DriveGetDrive("ALL")
    GUICtrlSetData($Input, "Drive Selection")
    _GUICtrlListView_BeginUpdate($hListView)
    _GUICtrlListView_DeleteAllItems($hListView)
    For $i = 1 To $drives[0]
    _GUICtrlListView_AddItem($hListView, StringUpper($drives[$i]) & "\", _GUIImageList_GetFileIconIndex($drives[$i] & "\"))
    Next
    _GUICtrlListView_EndUpdate($hListView)
    Return
    EndIf
    If StringRight($DIRECTORY_LOCAL, 1) <> "\" Then $DIRECTORY_LOCAL &= "\"
    If DriveStatus(StringLeft($DIRECTORY_LOCAL, 3)) <> "READY" Then Return 0 * MsgBox(16 + 8192, 'Error on Drive Access', "Drive " & StringLeft($DIRECTORY_LOCAL, 3) & " not ready!")
    GUICtrlSetData($Input, $DIRECTORY_LOCAL) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

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

    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 2)
    _GUICtrlListView_BeginUpdate($hListView)
    _GUICtrlListView_DeleteAllItems($hListView)
    _GUICtrlListView_AddItem($hListView, "[..]", 1)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView, $files[$i], $FOLDER_ICON_INDEX)
    _GUICtrlListView_AddSubItem($hListView, $item, _FormatFilesize(DirGetSize($DIRECTORY_LOCAL & $files[$i], 2)), 2)
    Next
    EndIf
    $files = _FileListToArray($DIRECTORY_LOCAL, "*", 1)
    _GUICtrlListView_EndUpdate($hListView)
    _GUICtrlListView_BeginUpdate($hListView)
    If IsArray($files) Then
    For $i = 1 To $files[0]
    $item = _GUICtrlListView_AddItem($hListView, $files[$i], _GUIImageList_GetFileIconIndex($files[$i]))
    _GUICtrlListView_AddSubItem($hListView, $item, _FileDateString2Calc(FileGetTime($DIRECTORY_LOCAL & $files[$i], 0, 1)), 1)
    _GUICtrlListView_AddSubItem($hListView, $item, _FormatFilesize(FileGetSize($DIRECTORY_LOCAL & $files[$i])), 2)
    Next
    EndIf
    _GUICtrlListView_EndUpdate($hListView)
    EndFunc ;==>_PopulateLocalListView

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

    Func _FormatFilesize($size)
    Select
    Case $size > 1000
    Return Round($size / 1024, 1) & " KB"
    Case $size > 1048500
    Return Round($size / 1048576, 1) & " MB"
    Case Else
    Return $size & " Byte"
    EndSelect
    EndFunc ;==>_FormatFilesize

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

    Func _GUIImageList_GetSystemImageList($bLargeIcons = False)
    Local $dwFlags, $hIml, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = BitOR($SHGFI_USEFILEATTRIBUTES, $SHGFI_SYSICONINDEX)
    If Not ($bLargeIcons) Then
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf

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

    ;~ '// Load the image list - use an arbitrary file extension for the
    ;~ '// call to SHGetFileInfo (we don't want to touch the disk, so use
    ;~ '// FILE_ATTRIBUTE_NORMAL && SHGFI_USEFILEATTRIBUTES).
    $hIml = _WinAPI_SHGetFileInfo(".txt", $FILE_ATTRIBUTE_NORMAL, _
    DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), $dwFlags)

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

    Return $hIml
    EndFunc ;==>_GUIImageList_GetSystemImageList

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

    Func _WinAPI_SHGetFileInfo($pszPath, $dwFileAttributes, $psfi, $cbFileInfo, $uFlags)
    Local $return = DllCall("shell32.dll", "DWORD*", "SHGetFileInfo", "str", $pszPath, "DWORD", $dwFileAttributes, "ptr", $psfi, "UINT", $cbFileInfo, "UINT", $uFlags)
    If @error Then Return SetError(@error, 0, 0)
    Return $return[0]
    EndFunc ;==>_WinAPI_SHGetFileInfo

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

    Func _GUIImageList_GetFileIconIndex($sFileSpec, $bLargeIcons = False, $bForceLoadFromDisk = False)
    Local $dwFlags, $FileInfo = DllStructCreate($tagSHFILEINFO)

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

    $dwFlags = $SHGFI_SYSICONINDEX
    If $bLargeIcons Then
    $dwFlags = BitOR($dwFlags, $SHGFI_LARGEICON)
    Else
    $dwFlags = BitOR($dwFlags, $SHGFI_SMALLICON)
    EndIf
    ;~ ' We choose whether to access the disk or not. If you don't
    ;~ ' hit the disk, you may get the wrong icon if the icon is
    ;~ ' not cached. But the speed is very good!
    If Not $bForceLoadFromDisk Then
    $dwFlags = BitOR($dwFlags, $SHGFI_USEFILEATTRIBUTES)
    EndIf

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

    ;~ ' sFileSpec can be any file. You can specify a
    ;~ ' file that does not exist and still get the
    ;~ ' icon, for example sFileSpec = "C:\PANTS.DOC"
    Local $lR = _WinAPI_SHGetFileInfo( _
    $sFileSpec, $FILE_ATTRIBUTE_NORMAL, DllStructGetPtr($FileInfo), DllStructGetSize($FileInfo), _
    $dwFlags _
    )

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

    If ($lR = 0) Then
    Return SetError(1, 0, -1)
    Else
    Return DllStructGetData($FileInfo, "iIcon")
    EndIf
    EndFunc ;==>_GUIImageList_GetFileIconIndex

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

    ; Author(s): Prog@ndy
    Func _FileDateString2Calc($filedate)
    Return StringRegExpReplace($filedate, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$1/$2/$3 $4:$5:$6")
    EndFunc ;==>_FileDateString2Calc
    ; Author(s): Prog@ndy
    Func _CalcDate2FileDateString($calcdate)
    Return StringRegExpReplace($calcdate, "(\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):(\d{2})", "$1$2$3$4$5$6")
    EndFunc ;==>_CalcDate2FileDateString

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hListView1
    Switch $iCode
    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    Global $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    $aaaa = DllStructGetData($tInfo, "INDEX")
    MsgBox(0, "", _GUICtrlListView_GetItemText($hListView2, $aaaa))

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

    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)

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

    ConsoleWrite("lll" & @CRLF)
    If _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index")) = "[..]" Then
    Local $slash = StringInStr($DIRECTORY_LOCAL, "\", 1, -2)
    If $slash Then
    $DIRECTORY_LOCAL = StringLeft($DIRECTORY_LOCAL, $slash)
    ElseIf StringRegExp($DIRECTORY_LOCAL, "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = ""
    EndIf
    _PopulateLocalListView($DIRECTORY_LOCAL, $hListView1, $inpLocalDirectory)
    ElseIf _GUICtrlListView_GetItemImage($hListView1, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
    $DIRECTORY_LOCAL &= _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL, $hListView1, $inpLocalDirectory)
    ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LOCAL = _GUICtrlListView_GetItemText($hListView1, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LOCAL, $hListView1, $inpLocalDirectory)
    MsgBox(0, "", $inpLocalDirectory)
    EndIf
    ; No return value
    EndSwitch
    ;\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--\/--
    Case $hListView2
    Switch $iCode

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

    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)

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

    ConsoleWrite("222" & @CRLF)
    If _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index")) = "[..]" Then
    Local $slash = StringInStr($DIRECTORY_LV2, "\", 1, -2)
    If $slash Then
    $DIRECTORY_LV2 = StringLeft($DIRECTORY_LV2, $slash)
    ElseIf StringRegExp($DIRECTORY_LV2, "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LV2 = ""
    EndIf
    _PopulateLocalListView($DIRECTORY_LV2, $hListView2, $inpLV2Directory)
    ElseIf _GUICtrlListView_GetItemImage($hListView2, DllStructGetData($tInfo, "Index")) = $FOLDER_ICON_INDEX Then
    $DIRECTORY_LV2 &= _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LV2, $hListView2, $inpLV2Directory)
    ElseIf StringRegExp(_GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"), 0), "\A[A-Za-z]:\\\Z") Then
    $DIRECTORY_LV2 = _GUICtrlListView_GetItemText($hListView2, DllStructGetData($tInfo, "Index"))
    _PopulateLocalListView($DIRECTORY_LV2, $hListView2, $inpLV2Directory)
    EndIf
    ; No return value
    EndSwitch
    ;/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--/\--
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    habe jetz mal in dem Script von Raupi in Zeile 250 eine MsgBox, die eig den Namen des Items zurückgeben sollte wenn man auf eins klickt aber es kommt immer nur "[..] "oder bei Progandys Script "/.." - warum?