Programme in TreeView ausführen (Drag & Drop)

  • Hey Leute , ich wollte fragen wie das genau geht.
    Ich hab eine "TreeView" wo ich bestimmte Programme drin haben möchte.
    Die ich z.B. "Rein ziehen kann" (Drag and Drop) nehmen wir an ich möchte Mozilla Firefox.exe da drin haben, dann Ziehe ich mozilla in TreeView und kann mozilla aus dieser TreeView mit einem Doppelklick starten.

    Dan kann ich ganz viele Programme dort reinziehen auch Ordner und so.
    Wenn ich das Gui Schließe das sie in eine *.ini gespeichert werden und wen ich das Programm neu Öffne sie wieder geladen werden.

    Hier , so weit bin ich schon ;)
    Ich hoffe ihr könnt mir Helfen =)

    Spoiler anzeigen
    [autoit]

    #include <TreeViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinApi.au3>
    #include <GuiImageList.au3>
    #include <GuiTreeView.au3>

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

    Opt("GuiOnEventMode", 1)
    ; #GUI# =================================================================================

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

    Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)
    $Options = GUICreate("Tool", 260, 455, -1, -1)
    GUISetBkColor(0xFFFFFF)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    GUICtrlCreateGroup("", 15, 15, 230, 70)
    $label = GUICtrlCreateLabel("Durchsichtig = 100%", 23, 37, -1, 20)
    $slider = GUICtrlCreateSlider(23, 57, 200, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
    $TreeView= GUICtrlCreateTreeView(5, 100, 250, 350, $iStyle, $WS_EX_CLIENTEDGE)
    GUICtrlSetData($slider, 100)
    GUISetState()

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

    GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")

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

    Func WM_HVSCROLL($hwnd, $iMsg, $wParam, $lParam) ; Slider
    Local $hWndFrom, $iCode
    If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
    $hWndFrom = $lParam
    $iCode = _WinAPI_HiWord($wParam)
    Switch $hWndFrom
    Case $slider, $hWndCombo1
    GUICtrlSetData($label, "Durchsichtig = " & GUICtrlRead($slider) & "%")
    WinSetTrans("Tool", "", GUICtrlRead($slider) * 2.55)
    EndSwitch
    EndFunc ;==>WM_HVSCROLL

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

    ; #MAIN LOOP# ============================================================================
    While 1
    Sleep(100)
    WEnd

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

    ; #FUNCTIONS# ============================================================================

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    3 Mal editiert, zuletzt von tuttifrutti (24. Mai 2009 um 17:01)

  • Das Wort XXXXX (auch altertümlich: Langmut) bezeichnet die Fähigkeit, warten zu können. Oft gilt XXXXX als eine Tugend; ihr Gegenteil ist die XXXXXXX.

    Also was brauchst Du ??? ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Suchstu ungefähr sowas?:

    Spoiler anzeigen
    [autoit]

    #include <ListviewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiListView.au3>

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

    $hGUI = GUICreate("ListView - ExecuteIt", 500, 400, Default, Default, Default, $WS_EX_ACCEPTFILES)
    $hListview = GUICtrlCreateListView("Files", 10, 10, 480, 380)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 250)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_DROPPED
    $file = @GUI_DragFile
    If StringRegExp($file, "^.+\.(?i)((EXE)|(AU3)|(GIF)|(JPG))$") Then
    _GUICtrlListView_AddItem($hListview, $file)
    Else
    MsgBox(0, "", $file & @CRLF & "Is an invalid file type.")
    EndIf
    EndSwitch
    WEnd

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListView And $code = -3 And _GUICtrlListView_GetSelectedCount($hListView) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView)
    IF _GUICtrlListView_GetItemSelected($hListView, $i) Then
    ShellExecute(_GUICtrlListView_GetItemText($hListView, $i))
    EndIf
    Next
    Endif
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • Ja sowas meine ich ;)

    Ich habe es mal versucht des es Durchsichtig wird.Aber irgendwie klappt das nimmer , ich habe versucht alles so zu übernehmen wie es in dem anderen Script war.
    Und könnte man machen , dass man die Dateinamen sieht und nicht den ganzen Pfad ? (Das wird ne menge Platz sparen ;))

    Wenn ihr euch wunder warum ich so viele Include drin habe ^^ "Da ich Nie weiß welchen ich nehmen muss ^^ Drum nehme ich immer alle ;)"

    Spoiler anzeigen
    [autoit]

    #include <ListviewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiListView.au3>
    #include <TreeViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinApi.au3>
    #include <GuiImageList.au3>
    #include <GuiTreeView.au3>

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

    Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)
    $hGUI = GUICreate("ListView - ExecuteIt", 900, 700, Default, Default, Default, $WS_EX_ACCEPTFILES)
    GUISetBkColor(0xFFFFFF)

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

    $label = GUICtrlCreateLabel("Durchsichtig = 100%", 603, 37, -1, 20)
    $slider = GUICtrlCreateSlider(603, 57, 200, 20,BitOR($TBS_AUTOTICKS, $WS_BORDER))
    GUICtrlSetData($slider, 100)

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

    $hListview = GUICtrlCreateListView("Programme", 20, 10, 480, 580,$iStyle, $WS_EX_CLIENTEDGE)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 250)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_DROPPED
    $file = @GUI_DragFile
    If StringRegExp($file, "^.+\.(?i)((EXE)|(AU3)|(GIF)|(JPG))$") Then
    _GUICtrlListView_AddItem($hListview, $file)
    Else
    MsgBox(0, "", $file & @CRLF & "Is an invalid file type.")
    EndIf
    EndSwitch
    WEnd

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

    Func WM_HVSCROLL($hwnd, $iMsg, $wParam, $lParam) ; Slider
    Local $hWndFrom, $iCode
    If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
    $hWndFrom = $lParam
    $iCode = _WinAPI_HiWord($wParam)
    Switch $hWndFrom
    Case $slider, $hWndCombo1
    GUICtrlSetData($label, "Durchsichtig = " & GUICtrlRead($slider) & "%")
    WinSetTrans("Tool", "", GUICtrlRead($slider) * 2.55)
    EndSwitch
    EndFunc ;==>WM_HVSCROLL

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListView And $code = -3 And _GUICtrlListView_GetSelectedCount($hListView) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView)
    IF _GUICtrlListView_GetItemSelected($hListView, $i) Then
    ShellExecute(_GUICtrlListView_GetItemText($hListView, $i))
    EndIf
    Next
    Endif
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • Schau mal hier links auf der Seite unter AutoIt Downloads, da gibts son schönen Tool namens OrganizeIncludes. Einfach installieren, dann mit strg+shift+alt+i in Scite starte, dann zeigt er dir an, welche includes du benötigst, und welche überflüssig sind.

  • Danke schön...
    Sowas habe ich gesucht =) Einfach nur klasse ;)
    Ich wüsste nicht was ich ohne euch nur machen könnte ^^

    Mit freundlichen Grüßen <--

  • Ich habe jetzt versucht , dass wen man das Programm schließt ,dass er die Programme speichert.
    Bei mir steht in der .txt datei aber immer nur 0
    Was mach ich falsch ^^

    (ich bin nicht so gut in AutoIt ^^)


    Spoiler anzeigen
    [autoit]

    #include <ListviewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <SliderConstants.au3>
    #include <GuiListView.au3>
    #include <Array.au3>
    #include <File.au3>

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

    HotKeySet("{ESC}", "exit_")

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

    Local $log1 = @UserName & "-Programm.txt"

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

    DirCreate(@ScriptDir & "\TuttiFrutti\")

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

    Dim $filepaths[1], $szDrive, $szDir, $szFName, $szExt
    $hGUI = GUICreate("Gui", 275, 300, Default, Default, Default, $WS_EX_ACCEPTFILES)
    $hListview = GUICtrlCreateListView("Files", 10, 10, 254, 220, BitOR(0x0004, 0x4000, 0x0010, 0x0008), 0x00000020)
    _GUICtrlListView_SetColumnWidth($hListview, 0, 250)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    $label = GUICtrlCreateLabel("Transparenz = 100%", 80, 237, -1, 14)
    $slider = GUICtrlCreateSlider(10, 257, 254, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
    GUICtrlSetLimit($slider, 100, 20)
    GUICtrlSetData($slider, 100)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    $paste1 = GUICtrlRead($hListview)
    FileOpen(@ScriptDir & "\TuttiFrutti\" & $log1, 2)
    Sleep(100)
    FileWrite(@ScriptDir & "\TuttiFrutti\" & $log1, $paste1)
    FileClose(@ScriptDir & "\TuttiFrutti\" & $log1)
    Exit

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

    Case $GUI_EVENT_DROPPED
    $file = @GUI_DragFile
    If StringRegExp($file, "^.+\.(?i)((EXE)|(AU3)|(GIF)|(JPG))$") Then
    _ArrayAdd($filepaths, $file)
    $split = _PathSplit($file, $szDrive, $szDir, $szFName, $szExt)
    $file = $split[3]
    _GUICtrlListView_AddItem($hListview, $file)
    Else
    MsgBox(0, "", $file & @CRLF & "Konnte nicht eingefügt werden.")
    EndIf
    EndSwitch
    WEnd

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListview And $code = -3 And _GUICtrlListView_GetSelectedCount($hListview) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($hListview)
    If _GUICtrlListView_GetItemSelected($hListview, $i) Then
    ShellExecute($filepaths[$i + 1])
    EndIf
    Next
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func WM_HVSCROLL($hWnd, $iMsg, $wParam, $lParam) ; Slider
    Local $hwndFrom, $iCode
    If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
    $hwndFrom = $lParam
    $iCode = _WinAPI_HiWord($wParam)
    Switch $hwndFrom
    Case $slider, $hWndCombo1
    GUICtrlSetData($label, "Durchsichtig = " & GUICtrlRead($slider) & "%")
    WinSetTrans("Tutti_Frutti v1.00", "", GUICtrlRead($slider) * 2.55)
    EndSwitch
    EndFunc ;==>WM_HVSCROLL

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

    Func exit_()
    $paste1 = GUICtrlRead($hListview)
    FileOpen(@ScriptDir & "\TuttiFrutti\" & $log1, 2)
    Sleep(100)
    FileWrite(@ScriptDir & "\TuttiFrutti\" & $log1, $paste1)
    FileClose(@ScriptDir & "\TuttiFrutti\" & $log1)
    Exit
    EndFunc ;==>exit_

    [/autoit]
  • Perfekt ;) Da fragst du noch ob das in Ordnung ist ^^ klar ist das in Ordnung ;)

    nur was kann

    [autoit]

    ;#Include <ChaosKeks.Exe>

    [/autoit]

    die ChaosKeks.exe habe ich net :D oder war das nur son scherz ^^

    MfG

  • Ich wollte jetzt mit ContextMenu & CreateMenuIteam eine Namens änderung durchführen.
    So das man belib den Namen des Programme in der ListView ändern kann , aber weiter komme ich nicht.=)

    Spoiler anzeigen
    [autoit]

    #include <ListviewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <SliderConstants.au3>
    #include <GuiListView.au3>
    #include <Array.au3>
    #include <File.au3>
    ;#Include <ChaosKeks.Exe>
    Opt("OnExitFunc", "OnAutoItExit")

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

    Local $contextmenu, $buttoncontext, $buttonitem

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

    Dim $filepaths[1], $szDrive, $szDir, $szFName, $szExt

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

    $hGUI = GUICreate("Tutti_Frutti v1.01", 275, 300, Default, Default, Default, $WS_EX_ACCEPTFILES)

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

    $hListview = GUICtrlCreateListView("Files", 10, 10, 254, 220,BitOR(0x0004, 0x4000, 0x0010, 0x0008), 0x00000020)
    _GUICtrlListView_SetColumnWidth($hListview, 0, 250)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)

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

    $buttoncontext = GUICtrlCreateContextMenu($hListview)
    $buttonitem = GUICtrlCreateMenuItem("Name ändern", $buttoncontext)

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

    $label = GUICtrlCreateLabel("Transparenz = 100%", 80, 237, -1, 14)

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

    $slider = GUICtrlCreateSlider(10, 257, 254, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
    GUICtrlSetLimit($slider, 100, 20)
    GUICtrlSetData($slider, 100)
    GUISetState(@SW_SHOW)

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

    If FileExists(@ScriptDir & "/Save.ini") Then
    $aData = IniReadSection(@ScriptDir & "\Save.ini", "Files")
    For $i = 1 To UBound($aData) - 1
    _ArrayAdd($filepaths, $aData[$i][1])
    $split = _PathSplit($aData[$i][1], $szDrive, $szDir, $szFName, $szExt)
    $file = $split[3]
    _GUICtrlListView_AddItem($hListview, $file)
    Next
    FileDelete(@ScriptDir & "/Save.ini")
    EndIf

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_DROPPED
    $file = @GUI_DragFile
    If StringRegExp($file, "^.+\.(?i)((EXE)|(AU3)|(GIF)|(JPG))$") Then
    _ArrayAdd($filepaths, $file)
    $split = _PathSplit($file, $szDrive, $szDir, $szFName, $szExt)
    $file = $split[3]
    _GUICtrlListView_AddItem($hListview, $file)
    Else
    MsgBox(0, "", $file & @CRLF & "Is an invalid file type.")
    EndIf


    Case $buttonitem
    InputBox("Änderung"," ","","",100,100,-1,-1)
    EndSwitch
    WEnd

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListview And $code = -3 And _GUICtrlListView_GetSelectedCount($hListview) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($hListview)
    If _GUICtrlListView_GetItemSelected($hListview, $i) Then
    ShellExecute($filepaths[$i + 1])
    EndIf
    Next
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func WM_HVSCROLL($hWnd, $iMsg, $wParam, $lParam)
    Local $hwndFrom, $iCode
    If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
    $hwndFrom = $lParam
    $iCode = _WinAPI_HiWord($wParam)
    Switch $hwndFrom
    Case $slider, $hWndCombo1
    GUICtrlSetData($label, "Transparenz = " & GUICtrlRead($slider) & "%")
    WinSetTrans("Tutti_Frutti v1.01", "", GUICtrlRead($slider) * 2.55)
    EndSwitch
    EndFunc ;==>WM_HVSCROLL

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

    Func OnAutoItExit()
    For $i = 1 To UBound($filepaths) - 1
    IniWrite(@ScriptDir & "\Save.ini", "Files", "Key" & $i, $filepaths[$i] & @LF)
    Next
    EndFunc ;==>OnAutoItExit

    [/autoit]

    Einmal editiert, zuletzt von tuttifrutti (23. Mai 2009 um 01:02)

  • Hey , das mit Exit habe ich einfach gemacht.

    Einfach nomma ein Case ^^

    Deins war ja so

    [autoit]

    Case $GUI_EVENT_CLOSE,$exititem
    Exit

    [/autoit]

    Ich habe dann

    [autoit]

    Case $GUI_EVENT_CLOSE
    Exit
    Case $exititem
    Exit

    [/autoit]

    Und das mit Exit geht jetzt ;) Ich gucke morgen auch nomma genauer weil da noch ein paar fehler sind.
    Aber es ist ja noch kein Meister vom Himmel gefallen =)

    MfG

  • Eh ich komm mir ganz ehrlich ein wenig verarscht vor 8|
    Das mit Exit ging bei mir jedenfalls auch ohne deine "Berichtigung".. Und was für andere Fehler meinstu außer Delete (was ich in meinem letzten Post schon erwähnt hab)..
    Sry wenn mein Weltbild so anders ist, aber ich hab ehrlich ein "Danke" erwartet..

  • Ich finde es sehr nett das du mir hilfst und beispiele gibst.
    Soll ich nun in jeder antwort Danke schreiben ^^ ?
    Nunja ich habe mal nen bisschen weiter gemacht.

    Ich hab nen paar Fehler versucht zu beheben , bei mir klappt alles einwandfrei.
    Auser , dass wen man den Namen ändert kann man die Datei nicht mehr öffnen.Sonst ist alles Perfekt =)

    MfG

    Edit:*
    Ups bei mir geht das mit dem Speichern nimmer ^^ Habe ich schon wieder ein Fehler gemacht.


    Jetzt speichert er sie nicht mehr ;) Erstmal jetzt Grillen und nachher gucken.

    Edit:2* Habe den Fehler doch noch gefunden Auto It QuellText erneuert ;)


    Spoiler anzeigen
    [autoit]


    ;==>Update ...
    #include <ListviewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <SliderConstants.au3>
    #Include <GuiListView.au3>
    #Include <Array.au3>
    #Include <File.au3>
    ;#Include <ChaosKeks.Exe>
    Opt("OnExitFunc", "OnAutoItExit")

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

    Global $Active = True
    Global $sDBFile = @ScriptDir & "\ExecuteItLog.ini" ; Pfad und Name der Datenbank-Datei
    Global $sHeader = "Files" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Dim $filepaths[1],$szDrive, $szDir, $szFName, $szExt

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

    $hGUI = GUICreate("ListView - ExecuteIt", 275, 300, Default, Default, Default, $WS_EX_ACCEPTFILES)

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

    $hListview = GUICtrlCreateListView($sHeader, 10, 10, 254, 220)
    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Files", 250, 0) ; 1. Spalte = 120 Px breit, rechts ausgerichtet

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

    _GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))

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

    GUICtrlSetState(-1, $GUI_DROPACCEPTED)

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

    $contextmenu = GUICtrlCreateContextMenu($hListView)
    $insertitem = GUICtrlCreateMenuItem("Insert Item(s)", $contextmenu)
    $renameitem = GUICtrlCreateMenuItem("Rename", $contextmenu)
    $deleteitem = GUICtrlCreateMenuItem("Delete", $contextmenu)
    $deleteALL = GuiCtrlCreateMenuItem("Delete All",$contextmenu)
    GUICtrlCreateMenuItem("", $contextmenu)
    $exititem = GUICtrlCreateMenuItem("Exit", $contextmenu)

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

    $label = GUICtrlCreateLabel("Transparenz = 100%", 80, 237, -1, 14)
    $slider = GUICtrlCreateSlider(10, 257, 254, 20, BitOR($TBS_AUTOTICKS, $WS_BORDER))
    GuiCtrlSetLimit($slider, 100,20)
    GuiCtrlSetData($slider, 100)
    GUISetState(@SW_SHOW)
    $EditBox = GUICreate('', 240, 30, -1, -1, BitOR($WS_POPUP,$WS_BORDER),$WS_EX_TOPMOST)
    $hEdit = GUICtrlCreateInput('', 5, 5, 230, 20)

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUIRegisterMsg($WM_HSCROLL, "WM_HVSCROLL")

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

    If FileExists($sDBFile) Then Load()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Save()
    Exit
    Case $exititem
    Save()
    Exit

    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren
    Case $GUI_EVENT_DROPPED
    $file = @GUI_DragFile
    If StringRegExp($file, "^.+\.(?i)((EXE)|(AU3)|(GIF)|(JPG))$") Then
    _ArrayAdd($filepaths, $file)
    $split = _PathSplit($file, $szDrive, $szDir, $szFName, $szExt)
    $file = $split[3]
    _GUICtrlListView_AddItem($hListview, $file)
    Else
    MsgBox(0, "", $file & @CRLF & "Ungültige Datei.")
    EndIf
    Case $insertitem
    $insert = FileOpenDialog("Select an item to insert!",@DesktopDir, "Dateien(*.Exe;*.Au3;*.gif;*.jpg)",5)
    $insertsplit = StringSplit($insert, "|")
    For $i = 1 To Ubound($insertsplit) -1
    $split = _PathSplit($insertsplit[$i], $szDrive, $szDir, $szFName, $szExt)
    $file = $split[3]
    If Ubound($insertsplit) -1 > 1 Then
    If $i > 1 Then
    _ArrayAdd($filepaths, $insertsplit[1]&"\"&$insertsplit[$i])
    _GUICtrlListView_AddItem($hListview, $file)
    EndIf
    Else
    _ArrayAdd($filepaths, $insertsplit[$i])
    _GUICtrlListView_AddItem($hListview, $file)
    EndIf
    Next
    ;~ _ArrayDisplay($filepaths)
    Case $renameitem
    Local $posGui, $posControl, $textItem
    For $i = 0 To _GuiCtrlListView_GetItemCount($hlistview)
    If _GuiCtrlListView_GetItemSelected($hlistview,$i) Then
    $textItem = _GUICtrlListView_GetItemText($hlistview, $i)
    $posControl = _GuiCtrlListView_GetItemPositionY($hlistview, $i)
    $posGui = WinGetPos($hGui)
    ExitLoop
    EndIf
    Next
    If $textitem <> "" Then
    GUIRegisterMsg($WM_ACTIVATE, "WM_ACTIVATE")
    GuiSetState(@SW_DISABLE, $hGui)
    HotKeySet('{ENTER}', '_EditEnter')
    GUICtrlSetData($hEdit, $textItem)
    WinMove($EditBox, "", $posGui[0]+19,$posGui[1]+$posControl+28)
    GuiSetState(@SW_SHOW, $EditBox)
    EndIf
    Case $deleteALL
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)

    Case $deleteitem
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    EndSwitch
    WEnd

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

    Func Load() ; Datenbank-Datei laden
    Local $sItem
    Local $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem
    Local $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    Local $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Save

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

    Func _EditEnter()
    $text = GUICtrlRead($hEdit)
    _GUICtrlListView_SetItemText($hListView, $i, $text)
    $split = _PathSplit($filepaths[$i+1], $szDrive, $szDir, $szFName, $szExt)
    $filepaths[$i+1] = $split[1] & $split[2] & $text & $split[4]
    GuiSetState(@SW_ENABLE, $hGui)
    WinActivate($hGui)
    GUIRegisterMsg($WM_ACTIVATE, "")
    EndFunc

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListView And $code = -3 And _GUICtrlListView_GetSelectedCount($hListView) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($hListView)
    IF _GUICtrlListView_GetItemSelected($hListView, $i) Then
    ShellExecute($filepaths[$i+1])
    EndIf
    Next
    Endif
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func WM_HVSCROLL($hwnd, $iMsg, $wParam, $lParam)
    Local $hWndFrom, $iCode
    If Not IsHWnd($slider) Then $hWndCombo1 = GUICtrlGetHandle($slider)
    $hWndFrom = $lParam
    $iCode = _WinAPI_HiWord($wParam)
    Switch $hWndFrom
    Case $slider, $hWndCombo1
    GUICtrlSetData($label, "Transparenz = " & GUICtrlRead($slider) & "%")
    WinSetTrans("ListView - ExecuteIt", "", GUICtrlRead($slider) * 2.55)
    EndSwitch
    EndFunc

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

    Func WM_ACTIVATE($hWnd, $Msg, $wParam, $lParam)
    $state = WinGetState($hGui)
    If Not BitAnd($state, 8) Then
    GuiSetState(@SW_HIDE, $EditBox)
    Else
    GuiSetState(@SW_Show, $EditBox)
    EndIf
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von tuttifrutti (23. Mai 2009 um 19:00)

  • Wow nice, du hast 20 Leerzeichen reingeknallt, eine Sortierfunk die nicht funktioniert und die eigendliche Speicher-Array Variante mit ner längeren Funktion ersetzt, die auch buggy ist :thumbup:...EDIT: sry für den Kommentar, war an dem Tag aus persöhnlichen Gründen relativ angepisst.. :pinch:

    Hmm das Rename war eigendlich so gemeint, dass man die datei in eine neue umbenennt (die sich im gleichen Ordner befindet)..also ist es klar das man nachm Rename die Datei nicht öffnen kann wenn sie nicht existiert ;)

    Naaja ich hab mich >trotzdem< nochmal drangesetzt und es ein wenig verbessert! Bitteschön:

    Spoiler anzeigen

    Füge dir vllt. moin noch ein, dass man die Datei nachm Rename der 1sten Methode (hab dir ne zweite gebaut).. auch noch benutzen kann.. sprich dass dann die Datei an sich und nicht nur im ListView umbenannt wird...

    2 Mal editiert, zuletzt von ChaosKeks (25. Mai 2009 um 14:59)

  • So wie versprochen hab ich grade das mit dem Rename richtig gestellt und hab bei meiner Bug-Jagd noch ein paar andere Fehler ausgebessert...
    Ist schon fast ein kleines Mini-Programm geworden :D

    Bitte Bescheid sagen, wenn noch jemand Fehler findet oder eventuelle Verbesserungmöglichkeiten!
    -Chaos

    Spoiler anzeigen

    2 Mal editiert, zuletzt von ChaosKeks (25. Mai 2009 um 14:59)

  • Hey,
    erstmall einen grossen lob kann es viel mit anfangen,
    würde es gerne für meine bedüfnisse anpassen.

    Hier meine bedürfnisse:
    1. würde gerne die GUI Grösse anpassen wollen?
    also Quasi die $hGUI = GUICreate("Chaos-Execution", 275, 290, Default, Default, Default, $WS_EX_ACCEPTFILES)
    per maus die grösse ändern.
    jemand einen Tipp wie ich das realiesieren kann?
    2.und ein Bild einfügen über ein durchsuchen fenster der sich wiederum an die gui anpasst an die grösse der gui?
    eine idee?
    edit:geniualer wäre natrürlich zeichnung hinzufügen und in der gui verschieben geht das?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (25. Mai 2009 um 10:03)