Drag n Drop auf meine GUI

  • Ist es möglich, über Drag & Drop Dateien in ein Input zu ziehen?
    Ich habe eine GUI, über welche Dateien mit 7-Zip verarbeitet werden. Momentan muss man die Datei manuell eingeben, möglich wäre auch, FileOpenDialog zu verwenden.
    Ich würde allerdings gerne mit Drag & Drop experimentieren.´, komme damit allerdings nicht ganz klar.

    Hier meine GUI:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <dph.au3>
    #include <Process.au3>

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

    $7zip_pfad = RegRead("HKCU\Software\Classes\Applications\7z.exe\shell\open\command", "")
    $7zip_pfad1 = StringTrimLeft($7zip_pfad, 1)
    $7zip_pfad2 = StringTrimRight($7zip_pfad1, 6)

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

    GUICreate("Easy 7-Zip by depressedphönix", 300, 200)

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

    GUISetState(@SW_SHOW)

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

    $i1 = GUICtrlCreateInput("Archiv", 0, 0, 200)
    $i2 = GUICtrlCreateInput("Passwort", 0, 20, 200)
    $i3 = GUICtrlCreateInput("Dateien", 0, 40, 200)
    $b1 = GUICtrlCreateButton("Zip", 100, 100, 100)

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

    While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf

    If $msg = $b1 Then
    If GUICtrlRead($i1) = "" Or GUICtrlRead($i1) = "Archiv" Then
    MsgBox(64, "Fehler", "Kein Archiv angegeben.")
    Else
    If GUICtrlRead($i3) = "" Or GUICtrlRead($i3) = "Dateien" Then
    MsgBox(64, "Fehler", "Keine Datei(en) angegeben.")
    Else
    If GUICtrlRead($i2) = "" Or GUICtrlRead($i2) = "Passwort" Then
    MsgBox(0, "", $7zip_pfad2 & " a -tzip " & GUICtrlRead($i1) & ' "' & GUICtrlRead($i3) & '"')
    _RunDOS($7zip_pfad2 & " a -tzip " & GUICtrlRead($i1) & ' "' & GUICtrlRead($i3) & '"')
    MsgBox(64, "Fertig", "Archiv erstellt.")
    Else
    MsgBox(0, "", $7zip_pfad2 & " a -tzip " & GUICtrlRead($i1) & ' "' & GUICtrlRead($i3) & '"' & " -p" & GUICtrlRead($i2))
    _RunDOS($7zip_pfad2 & " a -tzip " & GUICtrlRead($i1) & ' "' & GUICtrlRead($i3) & '"' & " -p" & GUICtrlRead($i2))
    MsgBox(64, "Fertig", "Archiv erstellt.")
    EndIf
    EndIf
    EndIf
    EndIf

    WEnd

    [/autoit]

    Kann mir jemad sagen, wie ich nun auf $i3 Dateien ziehen kann, deren Kompletter Pfad direkt eingetragen wird?

  • GUICreate("name, default, default, default, default, -1, $WS_EX_ACCEPTFILES)


    ...

    Case $Msg = $GUI_EVENT_DROPPED
    GUICtrlSetState($Edit, $GUI_FOCUS)


    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • Ok, hab's ausprobiert, kann nun Dateien auf die GUI ziehen, doch es passiert nichts, wo ist mein Fehler?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <dph.au3>
    #include <Process.au3>

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

    $7zip_pfad = RegRead("HKCU\Software\Classes\Applications\7z.exe\shell\open\command", "")
    $7zip_pfad1 = StringTrimLeft($7zip_pfad, 1)
    $7zip_pfad2 = StringTrimRight($7zip_pfad1, 6)

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

    GUICreate("Easy 7-Zip by depressedphönix", 300, 200, "", "", "", $WS_EX_ACCEPTFILES)

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

    GUISetState(@SW_SHOW)

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

    $i1 = GUICtrlCreateInput("Archiv", 0, 0, 200)
    $i2 = GUICtrlCreateInput("Passwort", 0, 20, 200)
    $i3 = GUICtrlCreateInput("Dateien", 0, 40, 200)
    $b1 = GUICtrlCreateButton("Zip", 100, 100, 100)

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

    While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf

    If $msg = $GUI_EVENT_DROPPED Then
    GUICtrlSetState($i3, $GUI_FOCUS)
    EndIf

    If $msg = $b1 Then
    If GUICtrlRead($i1) = "" Or GUICtrlRead($i1) = "Archiv" Then
    MsgBox(64, "Fehler", "Kein Archiv angegeben.")
    Else
    If GUICtrlRead($i3) = "" Or GUICtrlRead($i3) = "Dateien" Then
    MsgBox(64, "Fehler", "Keine Datei(en) angegeben.")
    Else
    If GUICtrlRead($i2) = "" Or GUICtrlRead($i2) = "Passwort" Then
    MsgBox(0, "", $7zip_pfad2 & " a -tzip " & GUICtrlRead($i1) & ' "' & GUICtrlRead($i3) & '"')
    _RunDOS($7zip_pfad2 & " a -tzip " & GUICtrlRead($i1) & ' "' & GUICtrlRead($i3) & '"')
    MsgBox(64, "Fertig", "Archiv erstellt.")
    Else
    MsgBox(0, "", $7zip_pfad2 & " a -tzip " & GUICtrlRead($i1) & ' "' & GUICtrlRead($i3) & '"' & " -p" & GUICtrlRead($i2))
    _RunDOS($7zip_pfad2 & " a -tzip " & GUICtrlRead($i1) & ' "' & GUICtrlRead($i3) & '"' & " -p" & GUICtrlRead($i2))
    MsgBox(64, "Fertig", "Archiv erstellt.")
    EndIf
    EndIf
    EndIf
    EndIf

    WEnd

    [/autoit]
  • Danke, jetzt tut's. Was würde ich nur ohne Euch machen. :D
    Das Thema kann geschlossen werden.