1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. DerSchatten

Beiträge von DerSchatten

  • 100 Dateien aus ordner veschieben

    • DerSchatten
    • 25. April 2012 um 13:24

    Ich möchte gerne aus einem Verzeichnis jeweils 100 Dateien die alphabetisch sortiert sind in einen neuen Ordner verschieben der automatisch durchnummeriert angelegt werden soll.

    Wie gehe ichd a am besten vor?

    Meine Idee dazu wäre:
    Ich muß zuerst feststellen wieviele Dateien sich in dem ordner befinden und durch 100 dividieren damit ich feststellen kann wieviele Ordner erstellt werden müssen.
    Diese Dann mit einer for-Schleife anlegen lassen.

    Anschließend ebenfalls mit einer FOR-Schleife 100 Dateien auswählen und verschieben.

    Wäre der Ansatz schon mal richtig?

  • _GUICtrlListView_SortItems sortiert nicht korrekt

    • DerSchatten
    • 17. September 2011 um 21:19

    Helft mir doch mal ob es da keine einfachere Lösung dafür gibt.

    Verwendet denn sonst niemand die Sortierung?

  • _GUICtrlListView_SortItems sortiert nicht korrekt

    • DerSchatten
    • 16. September 2011 um 17:02

    Die hatte ich mir angesehen.

    Nur, die komplette Funktion jetzt nochmal nachzubauen wenn sie ja eigentlich eh schon existiert ist doch schwachsinn, oder?

    Könnte man diese nicht mit einem simulierten Klick ausführen?. Dann erspar ich mir das alles.

  • _GUICtrlListView_SortItems sortiert nicht korrekt

    • DerSchatten
    • 16. September 2011 um 15:20

    Ich habs jetzt mal so versucht:

    [autoit]


    $listview_dateiliste = GUICtrlCreateListView("Dateiname|Typ", 18, 209, 265, 334)
    _GUICtrlHeader_SetItemFormat(_GUICtrlListView_GetHeader($listview_dateiliste), 0, $HDF_SORTUP)
    GUICtrlSetOnEvent(-1, "_ListViewDateiSort")

    [/autoit]

    Das Pfeilchen ist jetzt zwar da, aber 2 unschönheiten.

    .) Der Spaltenüberschrifttext fehlt nun ganz.
    .) Beim klick auf die Spalte wird nochmal in die selbe Richtung sortiert, erst beim zweiten Klick wechselt die Sortierung.

  • _GUICtrlListView_SortItems sortiert nicht korrekt

    • DerSchatten
    • 15. September 2011 um 21:33

    Klingt gut.

    Hab ein wenig herumprobiert.

    Kann ich das nicht direkt unter dem listenfeld anwenden?

    [autoit]


    $listview_dateiliste = GUICtrlCreateListView("Dateiname|Typ", 18, 209, 265, 334)
    GUICtrlSetOnEvent(-1, "_ListViewDateiSort")
    _GUICtrlHeader_SetItemFormat(-1, 0, $HDF_SORTUP)

    [/autoit]

    Muß ich da zuerst einen Header erstellen?

    Oder wie genau wendet man das an.

    Aus dem beispiel werd ich nicht ganz schlau.

  • _GUICtrlListView_SortItems sortiert nicht korrekt

    • DerSchatten
    • 15. September 2011 um 20:54

    Ihr habt recht. Ja damit gehts.

    Danke!

    Jetzt hätte ich trotzdem noch eine Frage dazu.

    Gibt es eine Möglichkeit beim starten des Programms die Sortierungspfeile in die Spaltenüberschrift zu bekommen?

    Also nicht erst wenn ich drauf klicke.

    _GUICtrlListView_SortItems ist anscheinend die einzige Funktion die Pfeile darstellt.

  • _GUICtrlListView_SortItems sortiert nicht korrekt

    • DerSchatten
    • 15. September 2011 um 20:30

    Interessant. Was genau bewirkt dieses FALSE?

    Das scheint nicht dokumentiert zu sein.

  • _GUICtrlListView_SortItems sortiert nicht korrekt

    • DerSchatten
    • 15. September 2011 um 19:52

    Ich habe ein Problem mit der Sortierung eines Listenfeldes.

    Ich habe mir eine Funktion gebastelt die mir beim Klick auf die Spaltenüberschrift eine Sortierung durchführt:

    [autoit]


    Func _ListViewDateiSort()
    _GUICtrlListView_RegisterSortCallBack($listview_dateiliste)
    _GUICtrlListView_SortItems($listview_dateiliste, GUICtrlGetState($listview_dateiliste))
    EndFunc

    [/autoit]

    Allerdings werden dabei Zahlen nicht in die Sortierung miteinbezogen. Egal in welche Richtung sortiert wird.

    Sortiere ich nach der zweiten Spalte und anschließend wieder die erste, sind die Zahlen irgendwo in der Sortierung verstreut.

  • Prüfen ob Datei vorhanden

    • DerSchatten
    • 13. September 2011 um 15:31

    Ok, und wie überprüfe ich jetzt jeden der Pfade ob sich die Datei darin befindet?

  • Prüfen ob Datei vorhanden

    • DerSchatten
    • 13. September 2011 um 14:52

    Ich möchte gerne bei Programmstart überprüfen ob eine Date vorhanden ist.

    Diese kann sich jedoch in jeden beliebigen Ordner befinden.
    Ausschlaggebend dafür ist das der Pfad in den Windows-PATH gesetzt ist.

    Wenn ich jetzt mit

    [autoit]


    If Not FileExists("nibread.exe")

    [/autoit]

    versuche die Datei zu überprüfen funktioniert das nicht, da er davon ausgeht das sich die Datei im gleichen Ordner wie die Anwendung befindet.

    Hat jemand eine Idee wie ich das lösen kann?

  • _FileListToArray mit mehreren Filter

    • DerSchatten
    • 13. September 2011 um 14:39

    Genau sowas hab ich gesucht.

    Da frag ich mich warum man so komplizierte Funktionen programmiert, wenn es so einfach geht :)

  • _FileListToArray mit mehreren Filter

    • DerSchatten
    • 12. September 2011 um 15:57

    Nun, so komplex benötige ich es gar nicht.

    Mich würde nur mal interessieren warum das mit _Array2DJoin nicht funktioniert.

  • _FileListToArray mit mehreren Filter

    • DerSchatten
    • 12. September 2011 um 00:24

    Ich möchte gerne in einem Listenfeld den Inhalt eines Ordners anzeigen der jedoch aus mehreren Dateifiltern bestehen soll.

    Da die Funktion _FileListToArray nur einen Filter erlaubt und _FileListToArrayEx bei der Sortierung ein Problem hat, wollte ich die Funktion _Array2DJoin nutzen um mehrere Arrays von Filtern zusammenfügen.

    Das hätte ich mir so vorgestellt:

    [autoit]


    Local $aFilelist1, $aFilelist2, $aFilelist3, $aFilelist, $ordnername = GUICtrlRead($input_ordnername)
    If $ordnername <> "" Then
    If StringRight($ordnername, 1) <> "\" Then GUICtrlSetData($input_ordnername, $ordnername & "\")
    If GUICtrlRead($combo_dateityp) = "IMAGE Dateien" Then
    $aFilelist1 = _FileListToArray($ordnername, "*.d" & StringLeft(GUICtrlRead($combo_dateityp), 3), 1)
    $aFilelist2 = _FileListToArray($ordnername, "*.g" & StringLeft(GUICtrlRead($combo_dateityp), 3), 1)
    $aFilelist3 = _FileListToArray($ordnername, "*.n" & StringLeft(GUICtrlRead($combo_dateityp), 3), 1)
    Local $aFilelist[3] = [$aFilelist1, $aFilelist2, $aFilelist3]
    For $i = 1 To UBound($aFilelist)-1
    _Array2DJoin($aFilelist[0], $aFilelist[$i])
    Next
    Else
    $aFilelist = _FileListToArray($ordnername, "*." & StringLeft(GUICtrlRead($combo_dateityp), 3), 1)
    EndIf
    If @error Then Return _GUICtrlListView_DeleteAllItems($listview_dateiliste)
    _GUICtrlListView_DeleteAllItems($listview_dateiliste)
    For $i = 1 To $aFilelist[0]
    GUICtrlCreateListViewItem(StringTrimRight($aFilelist[$i], 4) & "|" & StringLower(StringRight($aFilelist[$i], 3)), $listview_dateiliste)
    Next

    [/autoit]

    Leider kommt da nichts dabei heraus.
    Bekomme aber auch keine Fehlermeldung.

    Jemand eine Idee dazu?

  • Sortierung in Listenfeld gleich nach Programmstart

    • DerSchatten
    • 9. September 2011 um 15:49

    Bitteschön, mein Script:

    [autoit]


    #Include <GuiListView.au3> ;Mehrfachauswahl
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    #Include <File.au3>
    #include <Constants.au3>
    #include <ComboConstants.au3>
    #include <ButtonConstants.au3>
    #include <GuiEdit.au3>
    If FileExists(@TempDir & "\zoom.tmp") Then
    Else
    DirCreate(@TempDir & "\zoom.tmp")
    Endif
    FileInstall(".\ZoomCopy64.gif", @TempDir & "\zoom.tmp\ZoomCopy64.gif", 1)
    FileInstall(".\bericht.ico", @TempDir & "\zoom.tmp\bericht.ico", 1)
    FileInstall(".\image.ico", @TempDir & "\zoom.tmp\image.ico", 1)
    FileInstall(".\links.ico", @TempDir & "\zoom.tmp\links.ico", 1)
    FileInstall(".\ordner.ico", @TempDir & "\zoom.tmp\ordner.ico", 1)
    FileInstall(".\rechts.ico", @TempDir & "\zoom.tmp\rechts.ico", 1)
    Global Const $VK_RETURN = 0x0D
    Global Const $NM_DBKLICK = -3
    Global $deletefile, $dateipfad
    Opt("GUIOnEventMode", 1)
    ;GUI Main
    $gui_main = GUICreate("Zoom Copy 64", 772, 562) ;1200, 562
    GUISetOnEvent($GUI_EVENT_CLOSE, "_CloseGui")
    GUICtrlCreatePic(@TempDir & "\zoom.tmp\ZoomCopy64.gif", 191, 20, 389, 52)
    GUIRegisterMsg(0x004E, "_DoubleClickOnListView")
    ;Lokal
    $group_dateipc = GUICtrlCreateGroup("Verzeichnis lokaler PC", 8, 94, 286, 459)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $group_dateiiec = GUICtrlCreateGroup("Verzeichnis IEC/Image", 394, 94, 370, 459)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $input_ordnername = GUICtrlCreateInput(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Zoom Copy 64", "Path"), 18, 118, 232, 21, BitOR($ES_LEFT, $ES_AUTOHSCROLL))
    GUICtrlSetTip(-1, "Verzeichnispfad eingeben")
    $hInput_ordnername = GUICtrlGetHandle($input_ordnername)
    $wProcHandle = DllCallbackRegister("_WindowProc", "int", "hwnd;uint;wparam;lparam")
    $wProcOld = _WinAPI_SetWindowLong($hInput_ordnername, $GWL_WNDPROC, DllCallbackGetPtr($wProcHandle))
    $button_dateiauswahl = GUICtrlCreateButton("", 254, 117, 30, 23, $BS_ICON)
    GUICtrlSetImage($button_dateiauswahl, @TempDir & "\zoom.tmp\ordner.ico")
    GUICtrlSetTip(-1, "Verzeichnispfad auswählen")
    GUICtrlSetOnEvent(-1, "_AuswahlPfad")
    GUICtrlCreateLabel("Datei Filter:", 56, 182, 80, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    $combo_dateityp = GUICtrlCreateCombo("", 140, 179, 143, 21, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "IMAGE Dateien|PRG Dateien|SEQ Dateien|D64 Dateien|D71 Dateien|D80 Dateien|D81 Dateien|D82 Dateien|G64 Dateien|NBZ Dateien|NIB Dateien|NB2 Dateien", "IMAGE Dateien")
    GUICtrlSetTip(-1, "Nach Dateityp filtern")
    GUICtrlSetOnEvent(-1, "_DirOpen")
    $button_refresh = GUICtrlCreateButton("Pfad speichern", 17, 144, 84, 25)
    GUICtrlSetTip(-1, "Verzeichnispfad speichern")
    GUICtrlSetOnEvent(-1, "_DirSave")
    $button_refresh = GUICtrlCreateButton("Neu laden", 200, 144, 84, 25)
    GUICtrlSetTip(-1, "Verzeichnis neu einlesen")
    GUICtrlSetOnEvent(-1, "_DirOpen")
    $listview_dateiliste = GUICtrlCreateListView("Dateiname|Typ", 18, 209, 265, 334)
    GUICtrlSetOnEvent(-1, "_ListViewDateiSort")

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

    ;Übertragung
    GUICtrlCreateGroup("Übertragung", 304, 94, 80, 215)
    GUICtrlCreateLabel("d64copy", 314, 113, 60, 14)
    GUICtrlSetFont(-1, 9, 400, 4)
    $radio1 = GUICtrlCreateRadio("Auto", 314, 133, 60, 14)
    $radio2 = GUICtrlCreateRadio("Original", 314, 153, 60, 14)
    $radio3 = GUICtrlCreateRadio("Seriell 1", 314, 173, 60, 14)
    $radio4 = GUICtrlCreateRadio("Seriell 2", 314, 193, 60, 14)
    $radio5 = GUICtrlCreateRadio("Parallel", 314, 213, 60, 14)
    GUICtrlCreateLabel("nibtools", 314, 238, 60, 14)
    GUICtrlSetFont(-1, 9, 400, 4)
    $radio6 = GUICtrlCreateRadio("Parallel", 314, 258, 60, 14)
    GUICtrlSetState ($radio1, $GUI_CHECKED)
    $combo_laufwerktyp = GUICtrlCreateCombo("", 314, 278, 60, 21, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "1541|1571", "1541")
    GUICtrlSetTip(-1, "Laufwerkstyp auswählen")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $button_schreiben = GUICtrlCreateButton("", 312, 320, 64, 40, $BS_ICON)
    GUICtrlSetOnEvent(-1, "_WriteIEC")
    GUICtrlSetImage($button_schreiben, @TempDir & "\zoom.tmp\rechts.ico")
    GUICtrlSetTip(-1, "Image-Datei auf Diskette schreiben")
    $button_lesen = GUICtrlCreateButton("", 312, 370, 64, 40, $BS_ICON)
    GUICtrlSetOnEvent(-1, "_ReadIEC")
    GUICtrlSetImage($button_lesen, @TempDir & "\zoom.tmp\links.ico")
    GUICtrlSetTip(-1, "Disketten-Inhalt in Image-Datei schreiben")
    $button_oeffnen = GUICtrlCreateButton("", 312, 420, 64, 40, $BS_ICON)
    GUICtrlSetOnEvent(-1, "_ImageOpen")
    GUICtrlSetImage($button_oeffnen, @TempDir & "\zoom.tmp\image.ico")
    GUICtrlSetTip(-1, "Inhalt von Disk-Image anzeigen")
    $button_bericht = GUICtrlCreateButton("", 312, 470, 64, 40, $BS_ICON)
    GUICtrlSetOnEvent(-1, "_BerichtOeffnen")
    GUICtrlSetImage($button_bericht, @TempDir & "\zoom.tmp\bericht.ico")
    GUICtrlSetTip(-1, "Letzten Statusbericht anzeigen")
    ;IEC
    $edit_name = GUICtrlCreateInput("", 405, 117, 206, 21, $ES_READONLY)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetTip(-1, "Diskettenname")
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xEEDBCD)
    $edit_id = GUICtrlCreateInput("", 615, 117, 70, 21, $ES_READONLY)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetTip(-1, "Disketten-ID")
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xEEDBCD)
    $list_dir = GUICtrlCreateList("", 405, 142, 280, 339, $ES_READONLY + $WS_VSCROLL)
    GUISetOnEvent($GUI_EVENT_DROPPED, "_ImageOpen")
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xCDDAEE)
    $free_dir = GUICtrlCreateInput("",405, 470, 280, 21, $ES_READONLY)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xCDDAEE)
    $edit_status = GUICtrlCreateInput("", 405, 494, 280, 21, $ES_READONLY)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetTip(-1, "Letzter Laufwerksstatus")
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xD6EECD)
    $edit_vorgang = GUICtrlCreateInput("", 405, 522, 280, 21, $ES_READONLY)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xD6EECD)
    ;Laufwerkfunktionen
    $combo_laufwerkid = GUICtrlCreateCombo("", 691, 117, 65, 21, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "8|9|10|11", "8")
    GUICtrlSetTip(-1, "Laufwerk-ID auswählen")
    GUICtrlCreateLabel("Disk:", 691, 146, 34, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    GUICtrlCreateLabel("Laufwerk:", 691, 469, 60, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    $button_dir = GUICtrlCreateButton("Verzeichnis", 691, 168, 65, 25)
    GUICtrlSetTip(-1, "Verzeichnis auslesen")
    GUICtrlSetOnEvent(-1, "_DirIEC")
    $button_format = GUICtrlCreateButton("Formatieren", 691, 207, 65, 25)
    GUICtrlSetTip(-1, "Diskette formatieren")
    GUICtrlSetOnEvent(-1, "_FormatIEC")
    $button_rename = GUICtrlCreateButton("Name/ID", 691, 235, 65, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetTip(-1, "Diskettenname und ID ändern")
    GUICtrlSetOnEvent(-1, "_RenameIEC")
    $button_init = GUICtrlCreateButton("Initialisieren", 691, 263, 65, 25)
    GUICtrlSetTip(-1, "Laufwerk initialisieren")
    GUICtrlSetOnEvent(-1, "_InitIEC")
    $button_valid = GUICtrlCreateButton("Überprüfen", 691, 291, 65, 25)
    GUICtrlSetTip(-1, "Dateisystem auf Fehler überprüfen")
    GUICtrlSetOnEvent(-1, "_CheckIEC")
    $button_delete = GUICtrlCreateButton("Löschen", 691, 319, 65, 25)
    GUICtrlSetTip(-1, "Ausgewählte Datei(en) löschen")
    GUICtrlSetOnEvent(-1, "_DeleteFile")
    $button_status = GUICtrlCreateButton("Status", 691, 492, 65, 25)
    GUICtrlSetTip(-1, "Fehlerkanal von Laufwerk auslesen")
    GUICtrlSetOnEvent(-1, "_StatusIEC")
    $button_reset = GUICtrlCreateButton("Reset", 691, 520, 65, 25)
    GUICtrlSetTip(-1, "Laufwerk zurücksetzen")
    GUICtrlSetOnEvent(-1, "_ResetIEC")

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

    ;GUI Format
    $gui_format = GUICreate("Diskette im Laufwerk " & GUICtrlRead($combo_laufwerkid) & " formatieren", 392, 136)
    $input_formatname = GUICtrlCreateInput("leer", 20, 48, 140, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetLimit(-1, 16)
    $input_formatid = GUICtrlCreateInput("01", 170, 48, 50, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetLimit(-1, 2)
    $button_formatok = GUICtrlCreateButton("OK", 8, 82, 89, 25)
    GUICtrlSetOnEvent(-1, "_FormatIECOK")
    $button_formatbeenden = GUICtrlCreateButton("Abbrechen", 288, 82, 89, 25)
    GUICtrlSetOnEvent(-1, "_FormatIECClose")
    ;GUI Auswahl Image
    $gui_auswahlimage = GUICreate("Zieldatei angeben", 300, 120)
    GUICtrlCreateLabel("Dateinname (ohne Endung):", 12, 10, 300, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    $input_dateinameimage = GUICtrlCreateInput("neu", 10, 40, 280, 20)
    $button_imageok = GUICtrlCreateButton("OK", 10, 80, 89, 25)
    GUICtrlSetOnEvent(-1, "_ReadIECOK")
    $button_imagebeenden = GUICtrlCreateButton("Abbrechen", 200, 80, 89, 25)
    GUICtrlSetOnEvent(-1, "_AuswahlImageSchliessen")
    ;GUI Fortschritt
    $gui_progressbar = GUICreate("Lesen/Schreiben", 300, 100)
    GUICtrlCreateLabel("Vorgang läuft ...", 12, 10, 300, 18)
    GUICtrlSetFont(-1, 9, 600, 0)
    $progressbar = GUICtrlCreateProgress(10, 40, 280, 20)
    $label_progressbar = GUICtrlCreateLabel("", 12, 70, 40, 18)
    ;GUI Statusfenster
    $gui_statuscopy = GUICreate("letzter Statusbericht", 640, 480)
    $edit_statuscopy= GUICtrlCreateEdit("", 20, 20, 600, 400, BitOR($ES_READONLY, $WS_VSCROLL))
    GUICtrlSetFont(-1, 10, 400, 0, "Courier New")
    GUICtrlSetBkColor(-1, 0xCDDAEE)
    GUICtrlCreateButton("Schließen", 288, 440, 65, 25)
    GUICtrlSetOnEvent(-1, "_StatusSchliessen")
    ;GUI Warten
    $gui_warten = GUICreate("Lesen/Schreiben", 240, 76)
    GUICtrlCreateLabel("Vorgang läuft ...", 20, 10, 120, 18)
    GUICtrlSetFont(-1, 10, 600, 0)
    $label_dauer = GUICtrlCreateLabel("", 20, 40, 120, 36)

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

    ;starte mit HauptGUI
    GUISetState(@sw_show, $gui_main)
    _GUICtrlListView_RegisterSortCallBack($listview_dateiliste)
    _DirOpen()
    WinWaitClose($gui_main)
    Exit
    Func _CloseGui()
    DirRemove(@TempDir & "\zoom.tmp", 1)
    GUIDelete($gui_main)
    EndFunc
    ;Funktionen PC
    Func _AuswahlPfad()
    Local $ordnername
    $ordnername = FileSelectFolder("", "", 2, "", $gui_main)
    If Not FileExists($ordnername) Then Return
    GUICtrlSetData($input_ordnername, $ordnername)
    _DirOpen()
    EndFunc
    Func _DirSave()
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Zoom Copy 64", "Path", "REG_SZ", GUICtrlRead($input_ordnername))
    EndFunc
    Func _DirOpen()
    Local $aFilelist, $ordnername = GUICtrlRead($input_ordnername)
    If $ordnername <> "" Then
    If StringRight($ordnername, 1) <> "\" Then GUICtrlSetData($input_ordnername, $ordnername & "\")
    If GUICtrlRead($combo_dateityp) = "IMAGE Dateien" Then
    $aFilelist = _FileListToArrayEx($ordnername, "*.d*;*.g*;*.n*", 1)
    Else
    $aFilelist = _FileListToArray($ordnername, "*." & StringLeft(GUICtrlRead($combo_dateityp), 3), 1)
    EndIf
    If @error Then Return _GUICtrlListView_DeleteAllItems($listview_dateiliste)
    _GUICtrlListView_DeleteAllItems($listview_dateiliste)
    For $i = 1 To $aFilelist[0]
    GUICtrlCreateListViewItem(StringTrimRight($aFilelist[$i], 4) & "|" & StringLower(StringRight($aFilelist[$i], 3)), $listview_dateiliste)
    Next
    _GUICtrlListView_SetColumnWidth(GUICtrlGetHandle($listview_dateiliste), 0, 150)
    _GUICtrlListView_SimpleSort($listview_dateiliste, False, 0)
    EndIf
    EndFunc
    ;Funktionen Übertragung
    Func _ReadIEC()
    _Fehlercode()
    If @error Then Return MsgBox(48, "Fehler!", "Kein IEC Gerät gefunden!", 0, $gui_main)
    Local $ordnername = GUICtrlRead($input_ordnername)
    If $ordnername = "" Then Return MsgBox(48, "Fehler!", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    If StringRight($ordnername, 1) <> "\" Then GUICtrlSetData($input_ordnername, $ordnername & "\")
    _AuswahlImageOeffnen()
    EndFunc
    Func _ReadIECOK()
    Local $ext, $progress, $ordnername = GUICtrlRead($input_ordnername)
    Local $eingabename = $ordnername & GUICtrlRead($input_dateinameimage)
    _AuswahlImageSchliessen()
    If GUICtrlRead($radio1) = $GUI_CHECKED Then
    $ext = ".d64"
    $dauer = "(Dauer ca. 1.15 Minuten)"
    $lesen = "d64copy.exe -t auto -d " & GUICtrlRead($combo_laufwerktyp) & " " & GUICtrlRead($combo_laufwerkid) & ' "' & $eingabename & $ext & '" '
    ElseIf GUICtrlRead($radio2) = $GUI_CHECKED Then
    $ext = ".d64"
    $dauer = "(Dauer ca. 8.5 Minuten)"
    $lesen = "d64copy.exe -t original -d " & GUICtrlRead($combo_laufwerktyp) & " " & GUICtrlRead($combo_laufwerkid) & ' "' & $eingabename & $ext & '" '
    ElseIf GUICtrlRead($radio3) = $GUI_CHECKED Then
    $ext = ".d64"
    $dauer = "(Dauer ca. 2.43 Minuten)"
    $lesen = "d64copy.exe -t serial1 -d " & GUICtrlRead($combo_laufwerktyp) & " " & GUICtrlRead($combo_laufwerkid) & ' "' & $eingabename & $ext & '" '
    ElseIf GUICtrlRead($radio4) = $GUI_CHECKED Then
    $ext = ".d64"
    $dauer = "(Dauer ca. 1.15 Minuten)"
    $lesen = "d64copy.exe -t serial2 -d " & GUICtrlRead($combo_laufwerktyp) & " " & GUICtrlRead($combo_laufwerkid) & ' "' & $eingabename & $ext & '" '
    ElseIf GUICtrlRead($radio5) = $GUI_CHECKED Then
    $ext = ".d64"
    $dauer = "(Dauer ca. 30 Sekunden)"
    $lesen = "d64copy.exe -t parallel -d " & GUICtrlRead($combo_laufwerktyp) & " " & GUICtrlRead($combo_laufwerkid) & ' "' & $eingabename & $ext & '" '
    ElseIf GUICtrlRead($radio6) = $GUI_CHECKED Then
    $ext = ".nbz"
    $dauer = "(Dauer ca. 30 Sekunden)"
    $lesen = "nibread.exe -D" & GUICtrlRead($combo_laufwerkid) & ' "' & $eingabename & $ext & '" '
    EndIf
    If FileExists($eingabename & $ext) Then
    If MsgBox(52, "Hinweis!", "Datei existiert bereits. Überschreiben?") = 6 Then
    FileDelete ($eingabename & $ext)
    Else
    _ReadIEC()
    Return
    EndIf
    EndIf
    _WartenStart()
    GUICtrlSetData($edit_vorgang, "Image wird gelesen ...")
    GUICtrlSetData($label_dauer, $dauer)
    $dir = _getDOSOutput($lesen)
    GUICtrlSetData($edit_statuscopy, StringReplace(StringReplace(StringReplace($dir, @LF, ""), @CR, @CRLF), "found 4 busses" & @CR, ""))
    _WartenStop()
    If StringLeft($dir, 5) = "found" Then
    _DirOpen()
    GUICtrlSetData($edit_vorgang, "")
    Return MsgBox(48, "Fehler!", "Keine oder fehlerhafte Disk im Laufwerk!", 0, $gui_main)
    EndIf
    GUICtrlSetData($edit_vorgang, "")
    _BerichtOeffnen()
    _DirOpen()
    EndFunc
    Func _WriteIEC()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    _Fehlercode()
    If @error Then Return MsgBox(48, "Fehler!", "Kein IEC Gerät gefunden!", 0, $gui_main)
    If $ordnername = "" Then Return MsgBox(48, "Fehler!", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    If StringRight($ordnername, 1) <> "\" Then $ordnername &= "\"
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $dateiauswahl[0] = 0 Then Return MsgBox(48, "Fehler!", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    If GUICtrlRead($radio6) = $GUI_CHECKED Then
    If StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste), 3) <> "d64" And StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste), 3) <> "g64" And StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste), 3) <> "nbz" And StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste), 3) <> "nib" And StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste), 3) <> "nb2" Then Return MsgBox(48, "Fehler!", 'Mit der aktuellen Einstellung können nur "d64", "g64", "nbz", "nib" und "nb2" Images geschrieben werden!', 0, $gui_main)
    Else
    If GUICtrlRead($combo_laufwerktyp) = "1541" And StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste), 3) <> "d64" Then Return MsgBox(48, "Fehler!", 'Mit der aktuellen Einstellung können nur "d64" Images geschrieben werden!', 0, $gui_main)
    If GUICtrlRead($combo_laufwerktyp) = "1571" And StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste), 3) <> "d71" Then Return MsgBox(48, "Fehler!", 'Mit der aktuellen Einstellung können nur "d71" Images geschrieben werden!', 0, $gui_main)
    EndIf
    _Feldvariablen()
    If GUICtrlRead($radio1) = $GUI_CHECKED Then
    $dauer = "(Dauer ca. 1.37 Minuten)"
    $schreiben = "d64copy.exe -t auto -d " & GUICtrlRead($combo_laufwerktyp) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio2) = $GUI_CHECKED Then
    $dauer = "(Dauer ca. 9.21 Minuten)"
    $schreiben = "d64copy.exe -t original -d " & GUICtrlRead($combo_laufwerktyp) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio3) = $GUI_CHECKED Then
    $dauer = "(Dauer ca. 3.07 Minuten)"
    $schreiben = "d64copy.exe -t serial1 -d " & GUICtrlRead($combo_laufwerktyp) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio4) = $GUI_CHECKED Then
    $dauer = "(Dauer ca. 1.37 Minuten)"
    $schreiben = "d64copy.exe -t serial2 -d " & GUICtrlRead($combo_laufwerktyp) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio5) = $GUI_CHECKED Then
    $dauer = "(Dauer ca. 1.37 Minuten)"
    $schreiben = "d64copy.exe -t parallel -d " & GUICtrlRead($combo_laufwerktyp) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '" ' & GUICtrlRead($combo_laufwerkid)
    ElseIf GUICtrlRead($radio6) = $GUI_CHECKED Then
    $dauer = "(Dauer ca. 24 Sekunden)"
    $schreiben = "nibwrite.exe -D" & GUICtrlRead($combo_laufwerkid) & ' "' & $ordnername & _GUICtrlListView_GetItemTextString($listview_dateiliste) & '"'
    EndIf
    _WartenStart()
    GUICtrlSetData($edit_vorgang, "Image wird geschrieben ...")
    GUICtrlSetData($label_dauer, $dauer)
    $dir = _getDOSOutput($schreiben)
    GUICtrlSetData($edit_statuscopy, StringReplace(StringReplace(StringReplace($dir, @LF, ""), @CR, @CRLF), "found 4 busses" & @CR, ""))
    _WartenStop()
    If StringLeft($dir, 5) = "found" Then
    _DirOpen()
    GUICtrlSetData($edit_vorgang, "")
    Return MsgBox(48, "Fehler!", "Keine oder fehlerhafte Disk im Laufwerk!", 0, $gui_main)
    EndIf
    GUICtrlSetData($edit_vorgang, "")
    _BerichtOeffnen()
    _DirIEC()
    EndFunc
    Func _ImageOpen()
    Local $dateiauswahl, $ordnername = GUICtrlRead($input_ordnername)
    $dateiauswahl = _GUICtrlListView_GetSelectedIndices($listview_dateiliste, True)
    If $ordnername = "" Then Return MsgBox(48, "Fehler!", "Es wurde kein Verzeichnispfad ausgewählt!", 0, $gui_main)
    If StringRight($ordnername, 1) <> "\" Then GUICtrlSetData($input_ordnername, $ordnername & "\")
    If $dateiauswahl[0] = 0 Then Return MsgBox(48, "Fehler!", "Es wurde keine Datei ausgewählt!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Disketten-Image auslesen ...")
    For $i = 1 To $dateiauswahl[0]
    If StringRight(_GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]), 3) = "nbz" Then
    $temp_nbz = @TempDir & "\temp.d64"
    $dir_conv = _getDOSOutput("nibconv.exe " & '"' & $ordnername & StringReplace(_GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]), "|", ".") & '" ' & '"' & $temp_nbz & '"')
    $dir = _getDOSOutput("c1541.exe " & $temp_nbz & " -list")
    FileDelete ($temp_nbz)
    GUICtrlSetState($button_delete, $GUI_DISABLE)
    Else
    $dir = _getDOSOutput("c1541.exe " & '"' & $ordnername & StringReplace(_GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]), "|", ".") & '"' & " -list")
    GUICtrlSetState($button_delete, $GUI_ENABLE)
    Endif
    $dir_name = StringUpper(StringMid($dir, 4, 16))
    $dir_id = StringUpper(StringMid($dir, 21, 6))
    $dir_kurz = StringSplit(StringUpper(StringTrimLeft($dir, 27)), @LF, 1)
    $dir_free = StringReplace(StringUpper(StringTrimLeft($dir, StringInStr($dir, @LF, 0, -2))), @LF, "")
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    For $l = 1 To UBound($dir_kurz) - 3
    _GUICtrlListBox_AddString($list_dir, $dir_kurz[$l])
    Next
    GUICtrlSetData($free_dir, $dir_free)
    GUICtrlSetData($group_dateiiec, "Verzeichnis Image: " & StringReplace(_GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]), "|", "."))
    $dateipfad = $ordnername & StringReplace(_GUICtrlListView_GetItemTextString($listview_dateiliste, $dateiauswahl[$i]), "|", ".")
    Next
    GUICtrlSetData($edit_vorgang, "")
    $deletefile = 0
    EndFunc
    ;Funktionen IEC
    Func _DirIEC()
    _Fehlercode()
    If @error Then Return MsgBox(48, "Fehler!", "Kein IEC Gerät gefunden!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Diskettenverzeichnis auslesen ...")
    $dir = _getDOSOutput("cbmctrl.exe dir " & GUICtrlRead($combo_laufwerkid))
    If StringInStr($dir, "0 .") <> 0 Then
    $dir_name = StringUpper(StringMid($dir, 5, 16))
    $dir_id = StringUpper(StringMid($dir, 22, 6))
    If StringInStr($dir, "busses", 0, -1) <> 0 Then
    ;Windows7
    $dir_kurz = StringSplit(StringUpper(StringMid($dir, 30, StringInStr($dir, @CRLF, 0, -2) - 30)), @CRLF, 1)
    $dir_free = StringReplace(StringUpper(StringMid($dir, StringInStr($dir, @CRLF, 0, -4), StringInStr($dir, @CRLF, 0, -3) - StringInStr($dir, @CRLF, 0, -4))), @CRLF, "")
    $dir_status = StringReplace(StringUpper(StringMid($dir, StringInStr($dir, @CRLF, 0, -3), StringInStr($dir, @CRLF, 0, -2) - StringInStr($dir, @CRLF, 0, -3))), @CRLF, "")
    Else
    ;WindowsXP
    $dir_kurz = StringSplit(StringUpper(StringMid($dir, 30, StringInStr($dir, @CRLF, 0, -1) - 30)), @CRLF, 1)
    $dir_free = StringReplace(StringUpper(StringMid($dir, StringInStr($dir, @CRLF, 0, -3), StringInStr($dir, @CRLF, 0, -2) - StringInStr($dir, @CRLF, 0, -3))), @CRLF, "")
    $dir_status = StringReplace(StringUpper(StringMid($dir, StringInStr($dir, @CRLF, 0, -2), StringInStr($dir, @CRLF, 0, -1) - StringInStr($dir, @CRLF, 0, -2))), @CRLF, "")
    EndIf
    GUICtrlSetData($edit_name, $dir_name)
    GUICtrlSetData($edit_id, $dir_id)
    For $l = 1 To UBound($dir_kurz) - 3
    _GUICtrlListBox_AddString($list_dir, $dir_kurz[$l])
    Next
    GUICtrlSetData($free_dir, $dir_free)
    GUICtrlSetData($edit_status, $dir_status)
    GUICtrlSetData($group_dateiiec, "Verzeichnis IEC: " & $dir_name)
    EndIf
    GUICtrlSetData($edit_vorgang, "")
    GUICtrlSetState($button_delete, $GUI_ENABLE)
    $deletefile = 1
    EndFunc
    Func _FormatIEC()
    _Fehlercode()
    If @error Then Return MsgBox(48, "Fehler!", "Kein IEC Gerät gefunden!", 0, $gui_main)
    GUISetState(@SW_DISABLE, $gui_main)
    GUISetState(@SW_SHOW, $gui_format)
    EndFunc
    Func _FormatIECOK()
    _FormatIECClose()
    _Feldvariablen()
    $dauer = "(Dauer ca. 12 Sekunden)"
    _WartenStart()
    GUICtrlSetData($edit_vorgang, "Diskette formatieren ...")
    GUICtrlSetData($label_dauer, $dauer)
    $format = _getDOSOutput("cbmformat.exe -s " & GUICtrlRead($combo_laufwerkid) & ' "' & GUICtrlRead($input_formatname) & '",' & GUICtrlRead($input_formatid))
    $format_status = StringMid($format, StringInStr($format, ",", 0, -3) - 2)
    GUICtrlSetData($edit_status, $format_status)
    GUICtrlSetData($edit_vorgang, "")
    _DirIEC()
    _WartenStop()
    EndFunc
    Func _FormatIECClose()
    GUISetState(@SW_ENABLE, $gui_main)
    GUISetState(@SW_HIDE, $gui_format)
    EndFunc
    Func _InitIEC()
    _Fehlercode()
    If @error Then Return MsgBox(48, "Fehler!", "Kein IEC Gerät gefunden!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Laufwerk initialisieren ...")
    RunWait(@ComSpec & " /c cbmctrl.exe pcommand " & GUICtrlRead($combo_laufwerkid) & " i", "", @SW_HIDE)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _CheckIEC()
    _Fehlercode()
    If @error Then Return MsgBox(48, "Fehler!", "Kein IEC Gerät gefunden!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Dateisystem überprüfen ...")
    RunWait(@ComSpec & " /c cbmctrl.exe pcommand " & GUICtrlRead($combo_laufwerkid) & " v", "", @SW_HIDE)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _DeleteFile()
    Local $d64dateiauswahl = _GUICtrlListBox_GetSelItems($list_dir)
    If $d64dateiauswahl[0] = 0 Then Return MsgBox(16, "Hinweis!", "Es wurden keine Dateien zum löschen ausgewählt.")
    GUICtrlSetData($edit_vorgang, "Ausgewählte Datei(n) löschen ...")
    For $i = 1 To $d64dateiauswahl[0]
    If $deletefile = 0 Then RunWait(@ComSpec & " /c c1541.exe " & '"' & $dateipfad & '" -delete ' & StringLower(StringMid(_GUICtrlListBox_GetText($list_dir, $d64dateiauswahl[$i]), 7, StringInStr(_GUICtrlListBox_GetText($list_dir, $d64dateiauswahl[$i]), '"', 0, -1) - 6)), "", @SW_HIDE)
    If $deletefile = 1 Then RunWait(@ComSpec & ' /c cbmctrl pcommand ' & GUICtrlRead($combo_laufwerkid) & ' "s:' & StringLower(StringMid(_GUICtrlListBox_GetText($list_dir, $d64dateiauswahl[$i]), 7, StringInStr(_GUICtrlListBox_GetText($list_dir, $d64dateiauswahl[$i]), '"', 0, -1) - 7)) & '"' , "", @SW_HIDE)
    Next
    If $deletefile = 0 Then _ImageOpen()
    If $deletefile = 1 Then _DirIEC()
    EndFunc
    Func _StatusIEC()
    _Fehlercode()
    If @error Then Return MsgBox(48, "Fehler!", "Kein IEC Gerät gefunden!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Fehlerkanal auslesen ...")
    $dir = _getDOSOutput("cbmctrl.exe status " & GUICtrlRead($combo_laufwerkid))
    If StringInStr($dir, "busses", 0, -1) <> 0 Then
    ;Windows7
    $dir_status = StringReplace(StringUpper(StringLeft($dir, StringInStr($dir, @CRLF, 0, -2))), @CRLF, "")
    Else
    ;WindowsXP
    $dir_status = StringReplace(StringUpper(StringLeft($dir, StringInStr($dir, @CRLF, 0, -1) - 1)), @CRLF, "")
    EndIf
    GUICtrlSetData($edit_status, $dir_status)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _ResetIEC()
    _Fehlercode()
    If @error Then Return MsgBox(48, "Fehler!", "Kein IEC Gerät gefunden!", 0, $gui_main)
    _Feldvariablen()
    GUICtrlSetData($edit_vorgang, "Laufwerk zurücksetzen ...")
    RunWait(@ComSpec & " /c cbmctrl.exe reset", "", @SW_HIDE)
    Sleep (100)
    GUICtrlSetData($edit_vorgang, "Fehlerkanal auslesen ...")
    $dir = _getDOSOutput("cbmctrl.exe status " & GUICtrlRead($combo_laufwerkid))
    If StringInStr($dir, "busses", 0, -1) <> 0 Then
    ;Windows7
    $dir_status = StringReplace(StringUpper(StringLeft($dir, StringInStr($dir, @CRLF, 0, -2))), @CRLF, "")
    Else
    ;WindowsXP
    $dir_status = StringReplace(StringUpper(StringLeft($dir, StringInStr($dir, @CRLF, 0, -1) - 1)), @CRLF, "")
    EndIf
    GUICtrlSetData($edit_status, $dir_status)
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    ;Unterfunktionen
    Func _Feldvariablen()
    GUICtrlSetData($edit_name, "")
    GUICtrlSetData($edit_id, "")
    GUICtrlSetData($list_dir, "")
    GUICtrlSetData($free_dir, "")
    GUICtrlSetData($edit_status, "")
    GUICtrlSetData($edit_vorgang, "")
    EndFunc
    Func _AuswahlImageOeffnen()
    GUISetState(@SW_DISABLE, $gui_main)
    GUISetState(@SW_SHOW, $gui_auswahlimage)
    EndFunc
    Func _AuswahlImageSchliessen()
    GUISetState(@SW_ENABLE, $gui_main)
    GUISetState(@SW_HIDE, $gui_auswahlimage)
    EndFunc
    Func _WartenStart()
    GUISetState(@SW_DISABLE, $gui_main)
    GUISetState(@SW_SHOW, $gui_warten)
    EndFunc
    Func _WartenStop()
    GUISetState(@SW_ENABLE, $gui_main)
    GUISetState(@SW_HIDE, $gui_warten)
    EndFunc
    Func _BerichtOeffnen()
    GUISetState(@SW_SHOW, $gui_statuscopy)
    EndFunc
    Func _StatusSchliessen()
    GUISetState(@SW_HIDE, $gui_statuscopy)
    EndFunc
    Func _getDOSOutput($command)
    Local $foo = Run(@ComSpec & " /c " & $command, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $line
    While 1
    $line &= StdoutRead($foo)
    If @error Then ExitLoop
    WEnd
    Return $line
    EndFunc
    Func _Fehlercode()
    Local $fehler = _getDOSOutput("cbmctrl.exe status " & GUICtrlRead($combo_laufwerkid))
    If $fehler = "" Or StringLeft($fehler, 22) = "99, driver error,00,00" Or $fehler = "found 4 busses" & @CRLF & "found 4 busses" & @CRLF Then SetError(1)
    Return
    EndFunc
    ;Sonstiges
    Func _FileListToArrayEx($sPath, $sFilter = '*.*', $iFlag = 0, $sExclude = '')
    If Not FileExists($sPath) Then Return SetError(1, 1, '')
    If $sFilter = -1 Or $sFilter = Default Then $sFilter = '*.*'
    If $iFlag = -1 Or $iFlag = Default Then $iFlag = 0
    If $sExclude = -1 Or $sExclude = Default Then $sExclude = ''
    Local $aBadChar[6] = ['\', '/', ':', '>', '<', '|']
    For $iCC = 0 To 5
    If StringInStr($sFilter, $aBadChar[$iCC]) Or _
    StringInStr($sExclude, $aBadChar[$iCC]) Then Return SetError(2, 2, '')
    Next
    If StringStripWS($sFilter, 8) = '' Then Return SetError(2, 2, '')
    If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, '')
    Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder
    $sTFolder = $oFSO.GetSpecialFolder(2)
    Local $hOutFile = @TempDir & $oFSO.GetTempName
    If Not StringInStr($sFilter, ';') Then $sFilter &= ';'
    Local $aSplit = StringSplit(StringStripWS($sFilter, 8), ';'), $sRead
    For $iCC = 1 To $aSplit[0]
    If StringStripWS($aSplit[$iCC], 8) = '' Then ContinueLoop
    If StringLeft($aSplit[$iCC], 1) = '.' And _
    UBound(StringSplit($aSplit[$iCC], '.')) - 2 = 1 Then $aSplit[$iCC] = '*' & $aSplit[$iCC]
    RunWait(@ComSpec & ' /c ' & 'dir "' & $sPath & '\' & $aSplit[$iCC] _
    & '" /b /o-e /od > "' & $hOutFile & '"', '', @SW_HIDE)
    $sRead &= OemToChar(FileRead($hOutFile))
    If Not FileExists($hOutFile) Then Return SetError(4, 4, '')
    FileDelete($hOutFile)
    Next
    If StringStripWS($sRead, 8) = '' Then SetError(4, 4, '')
    Local $aFSplit = StringSplit(StringTrimRight(StringStripCR($sRead), 1), @LF)
    Local $sHold
    For $iCC = 1 To $aFSplit[0]
    If $sExclude And StringLeft($aFSplit[$iCC], _
    StringLen(StringReplace($sExclude, '*', ''))) = StringReplace($sExclude, '*', '') Then ContinueLoop
    Switch $iFlag
    Case 0
    $sHold &= $aFSplit[$iCC] & Chr(1)
    Case 1
    If StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') Then ContinueLoop
    $sHold &= $aFSplit[$iCC] & Chr(1)
    Case 2
    If Not StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') Then ContinueLoop
    $sHold &= $aFSplit[$iCC] & Chr(1)
    EndSwitch
    Next
    If StringTrimRight($sHold, 1) Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
    Return SetError(4, 4, '')
    EndFunc
    Func OemToChar ($szSrc)
    Local $strSrc = DllStructCreate("char[" & StringLen($szSrc) + 1 & "]")
    Local $strDst = DllStructCreate("char[" & StringLen($szSrc) * 2 + 1 & "]")
    DllStructSetData($strSrc,1,$szSrc)
    DllStructSetData($strDst,1,0)
    Local $lRetVal = DllCall("user32.dll", "long", "OemToChar", "ptr", DllStructGetPtr($strSrc), "ptr", DllStructGetPtr($strDst))
    If IsArray($lRetVal) And $lRetVal[0] = 1 Then
    Return SetError(0,0,DllStructGetData($strDst,1))
    EndIf
    Return SetError(1,0,"")
    EndFunc
    Func _WindowProc($hWnd, $Msg, $wParam, $lParam)
    Switch $hWnd
    Case $hinput_ordnername
    Switch $Msg
    Case $WM_GETDLGCODE
    Switch $wParam
    Case $VK_RETURN
    _DirOpen()
    Return 0
    EndSwitch
    EndSwitch
    EndSwitch

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

    Return _WinAPI_CallWindowProc($wProcOld, $hWnd, $Msg, $wParam, $lParam)
    EndFunc
    Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)
    If $wParam = $listview_dateiliste Then
    If $event = $NM_DBKLICK Then
    _ImageOpen()
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc
    Func _ListViewDateiSort()
    _GUICtrlListView_SortItems($listview_dateiliste, GUICtrlGetState($listview_dateiliste))
    EndFunc
    ;Reserve
    Func _getDOSOutputZeit($command, $zeitende)
    Local $text, $Pid = Run('"' & @ComSpec & '" /c ' & $command, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    If $zeitende <> 0 Then _ProgressBar($zeitende)
    While 1
    $text &= StdoutRead($Pid)
    If @error Then ExitLoop
    GUICtrlSetData($edit_dir, GUICtrlRead($edit_dir) & $text)
    Sleep(10)
    WEnd
    Return $text
    _ProgressBarStop()
    EndFunc
    Func _ProgressBarStart()
    GUISetState(@SW_DISABLE, $gui_main)
    GUISetState(@SW_SHOW, $gui_progressbar)
    EndFunc
    Func _ProgressBarStop()
    GUISetState(@SW_ENABLE, $gui_main)
    GUISetState(@SW_HIDE, $gui_progressbar)
    EndFunc
    Func _ProgressBar($zeit)
    _ProgressBarStart()
    Sleep(3000) ;3 Sekunde warten
    For $i = 0 To 100
    GUICtrlSetData($progressbar, $i)
    GUICtrlSetData($label_progressbar, $i & "%")
    Sleep($zeit)
    Next
    GUICtrlSetData($label_progressbar, "Fertig!")
    Sleep(1000) ;1 Sekunde warten
    _ProgressBarStop()
    EndFunc

    [/autoit]

    Vielleicht könntest du dir dazu auch gleich die Funktion: _FileListToArrayEx() ansehen. Die sortiert nämlich nicht korrekt.

    Damit der Dateilister die Auswahl IMAGE Dateien anzeigt sollten Dateien mit Endung: .d64, .d71, .d80, .d81, .d82, .g64, .nbz, .nib vorhanden sein.

  • Drag/Drop mit Funktion

    • DerSchatten
    • 9. September 2011 um 14:43

    Hat sich erledigt!

  • Drag/Drop mit Funktion

    • DerSchatten
    • 9. September 2011 um 14:16

    Ich möchte gerne beim Ziehen eines Eintrages aus einem GUICtrlCreateListView in ein GUICtrlCreateList eine Funktion auslösen.

    ist das möglich?

  • Sortierung in Listenfeld gleich nach Programmstart

    • DerSchatten
    • 9. September 2011 um 13:12

    damit funktioniert es zwar, allerdings hätte ich gerne das schöne Feature mit den Pfeilen, die mir anzeigen wie gerade sortiert ist.

  • Sortierung in Listenfeld gleich nach Programmstart

    • DerSchatten
    • 9. September 2011 um 09:34

    Ich verwende folgende Funktion um Spalten eines Listenfeldes zu sortieren:

    [autoit]


    $listview_dateiliste = GUICtrlCreateListView("Dateiname|Typ", 18, 209, 265, 334)
    GUICtrlSetOnEvent(-1, "_ListViewDateiSort")
    Func _ListViewDateiSort()
    _GUICtrlListView_SortItems($listview_dateiliste, GUICtrlGetState($listview_dateiliste))
    EndFunc

    [/autoit]

    Das Funktioniert auch soweit ganz gut.

    Nur hätte ich gerne das die Sortierung gleich nach starten meines Programmes und dann Aufsteigernd durchgeführt wird.

    Um das Verzeichnis nach dem starten einzulesen verwende ich folgende Funktion:

    [autoit]


    Func _DirOpen()
    Local $aFilelist, $ordnername = GUICtrlRead($input_ordnername)
    If $ordnername <>"" Then
    If StringRight($ordnername, 1) <> "\" Then GUICtrlSetData($input_ordnername, $ordnername & "\")
    If GUICtrlRead($combo_dateityp) = "IMAGE Dateien" Then
    $aFilelist = _FileListToArrayEx($ordnername, "*.d*;*.g*;*.n*", 1)
    Else
    $aFilelist = _FileListToArray($ordnername, "*." & StringLeft(GUICtrlRead($combo_dateityp), 3), 1)
    EndIf
    If @error Then Return _GUICtrlListView_DeleteAllItems($listview_dateiliste)
    _GUICtrlListView_DeleteAllItems($listview_dateiliste)
    For $i = 1 To $aFilelist[0]
    GUICtrlCreateListViewItem(StringTrimRight($aFilelist[$i], 4) & "|" & StringLower(StringRight($aFilelist[$i], 3)), $listview_dateiliste)
    Next
    _GUICtrlListView_SetColumnWidth(GUICtrlGetHandle($listview_dateiliste), 0, $LVSCW_AUTOSIZE)
    EndIf
    _ListViewDateiSort()
    EndFunc

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

    dabei dachte ich mir ich schmeiß die Sortierung ans Ende der Funktion.

    Nur zieht das irgendwie nicht.

    Ich leses gerade das _GUICtrlListView_SortItems nur auf Klicks in die Spaltenüberschrift reagiert.

    Wie könnte ich das lösen?

  • Transparente GIF's in Windows 7 und Windows XP

    • DerSchatten
    • 9. September 2011 um 08:49

    Achja, es sieht seltsamerweise nicht auf allen XP-Geräten so aus.

  • Transparente GIF's in Windows 7 und Windows XP

    • DerSchatten
    • 8. September 2011 um 21:37

    Tolle Antwort. Dann dürften ja GIF's unter XP generell nicht transparent dargestellt werden.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™