Gui die Processe darstellt und zwei button dahinter setzt...

  • Hallo Zusammen,

    Ich möchte die Handhabung von einem Pausenscript erleichtern ,indem ich die gestarteten Prozesse(standard.exe) in einem Fenster/Gui anzeigen lasse und mit 2 Button "pause" und "resume" in einer Zeile aufliste.

    Die Prozesse werden sobald ich die Dateien in einen Ordner schiebe durch das im hintergrund laufende Autoitprogramm automatisch startet.
    Das klappt schon. :)

    Zum Gui habe ich keinen Plan wie ich da anfangen soll. Hat jemand ein ähnliches GUI ein Beispiel parat.Ich muss die Pid von den Processen "standard.exe" abfragen. Leider bekomme ich immer nur die selbe Pid. Hat da jemand eine Idee? Hm vielleicht mit einem Array :)

    Wäre schön, wenn ihr was beitragen könntet.

    mfg

    Einmal editiert, zuletzt von Qeles (9. September 2011 um 10:12) aus folgendem Grund: wurde in ohne gegenleistung verschoben.

  • Eine Prozessliste bekommst du mit

    [autoit]

    ProcessList()

    [/autoit]

    Was genau du für eine Gui haben willst kann ich nicht nachvollziehen.
    Hast dus schonmal mit Koda probiert? Für Anfänger ist es so wohl am leichtesten Gui's zu bauen

  • Ich möchte eine Fenster, indem ein neugestarteter Prozess z.B.:"standard.exe" hinzugefügt wird und ich zwei Buttons zur Verfügung habe, mit denen ich den Prozess manipulieren kann. Eigentlich sehr simpel. Was ist Koba?

  • Koda heißt das DIng und ist ein grafischer Editor für GUI´s, meiner Meinung nach sollten Anfänger aber mit Code anfangen, ohne Designer um die Abläufe in einer GUI zu verstehen.

    MfG, campweb

  • Code ist bereits vorhanden :) . Ich hatte gehofft, dass ihr mir ein Gui Beispiel posten könntet ,welches ich dann editieren kann. :)

  • Hallo,

    Ich möchte die Handhabung von einem Pausenscript erleichtern ,indem ich bestimmte Prozessnamen (z.b.: standard.exe und pre.exe) in einem Fenster/Gui erst eingebe und dann im gleichem Fenster (anderer Abschnitt) die Prozesse angezeigt werden.
    Nun kommt die wichtige Erleichterung. Ich benötige hinter jedem Prozess 2 Button ("pause" und "resume") in der selben Zeile wie der Prozess auflistet.

    Die Prozesse werden sobald ich die Dateien in einen Ordner schiebe durch das im Hintergrund laufende Autoitprogramm automatisch startet.
    Das klappt schon. :)

    Zum Gui habe ich keinen Plan wie ich da anfangen soll. Hast du vielleicht eine ähnliche Oberfläche, die ich als Beispiel verwenden kann.

    Ich habe vor die Pid von den Processen "standard.exe" und "pre.exe" (mehrfach vorhanden) abzufragen. Leider bekomme ich immer nur die selbe Pid. Hat da jemand eine Idee?

    Wäre schön, wenn du mir helfen könntest.
    p.s.: Ich habe bereits eine Oberfläche im Anhang beigefügt.

    Hier kommt der Fehler . Ich möchte das der Behfehl Processlist("$Input1") in der Liste ausgegeben wird. Aber es tut sich nix.


    [autoit]


    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    Example()

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

    Func Example()
    Local $Pause, $Resume, $mylist, $close, $msg, $input1,$refesh

    GUICreate("My GUI list") ; will create a dialog box that when displayed is centered
    $input1 = GUICtrlCreateInput("Prozess eingeben", 64, 32, 175, 25)
    $Pause = GUICtrlCreateButton("Pause", 64, 62, 75, 25)
    $resume = GUICtrlCreateButton("Resume", 64, 92, 75, 25)
    $refesh = GUICtrlCreateButton("Refesh", 64, 122, 75, 25)
    $mylist = GUICtrlCreateList("Prozessliste", 176, 75, 121, 150)

    GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling

    $close = GUICtrlCreateButton("Exit", 64, 160, 75, 25)

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

    GUISetState()

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

    $msg = 0
    While $msg <> $GUI_EVENT_CLOSE
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $pause
    ShellExecute (@ScriptDir & "\pausep.exe", $PID)
    Case $msg = $resume
    ShellExecute (@ScriptDir & "\pausep.exe", $PID & " /r")
    Case $msg = $refesh
    processlist($input1)
    Case $msg = $close
    Exit
    EndSelect
    WEnd
    EndFunc ;==>Example

    [/autoit]
  • hier ein beipiel für prozesslist

    [autoit]


    $input=InputBox ( "welcher prozess", "prozess eingabe" )
    $list = ProcessList($input)
    for $i = 1 to $list[0][0]
    msgbox(0, $list[$i][0], $list[$i][1])
    next

    [/autoit]
  • Weil ein Typ meinte, dass der Thread in diesen Bereich gehört.

    Ich habe nicht aufgegeben. Kann es sein, dass 2darray nicht als File ausgeschrieben werden können?

  • Weil ein Typ meinte, dass der Thread in diesen Bereich gehört.

    Ich habe nicht aufgegeben. Kann es sein, dass 2darray nicht als File ausgeschrieben werden können?

    1. Ich habe einen Nick.
    2. Wenn nicht fähig bist auch nur die erste Zeile der Bemerkungen in der Hilfe zu GUICtrlCreateInput zu lesen ist das pure Faulheit und gehört daher in den Bereich Programmieranfragen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Vielen Dank chip für deinen Beitrag. In der Zeit hättest du auch dein wissen mit mir teilen können.

  • Hab mal schnell was gebaut

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <GuiListView.au3>

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

    ;AdlibRegister("_getProcess",5000) ; alle 5 Sekunden aktualisieren
    AdlibRegister("_checkaction",200) ; alle 500 ms

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

    $GUI = GUICreate("Process Edit v1", 349, 246, 425, 259)
    $pninput = GUICtrlCreateLabel("Prozess Name", 16, 24, 72, 17)
    $Input1 = GUICtrlCreateInput("", 112, 24, 205, 21)
    $btnPause = GUICtrlCreateButton("Pause", 16, 64, 105, 17)
    $btnStart = GUICtrlCreateButton("Start", 128, 64, 97, 17)
    $gOptions = GUICtrlCreateGroup("Optionen", 8, 48, 329, 41)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $btnExit = GUICtrlCreateButton("Exit", 232, 64, 97, 17)
    $g3 = GUICtrlCreateGroup("", 8, 8, 329, 41)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $gProcess = GUICtrlCreateGroup("Prozess Liste", 8, 90, 329, 145)
    $listview = GUICtrlCreateListView("Process Name", 20, 110, 300, 120)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    _getProcess() ; einmalig damit Feld gefüllt wird

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnPause
    ;ShellExecute (@ScriptDir & "\pausep.exe", $PID)
    Case $btnStart
    ;ShellExecute (@ScriptDir & "\pausep.exe", $PID & " /r")
    Case $btnExit
    Exit
    EndSwitch
    WEnd

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

    Func _getProcess()
    _GUICtrlListView_DeleteAllItems($listview)
    $plist = ProcessList()
    ;_ArrayDisplay($plist)
    For $i = 3 to UBound($plist) -1
    GUICtrlCreateListViewItem($plist[$i][0], $listview)

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

    ;MsgBox(1,$plist[$i][0],"")
    Next
    EndFunc

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

    Func _checkaction()
    $progname = _GUICtrlListView_GetItemTextString($listview)
    GUICtrlSetData($input1,$progname)
    EndFunc

    [/autoit]

    Denke mal dass kann man gut weiterbauen
    Gruß Marvin

    Einmal editiert, zuletzt von Protex (9. September 2011 um 11:02)

  • Super ding. Das bringt mich wegen der automatischen auswahl schon mal ein großes stück weiter. Aber ich brauche die pid doch für die shellexe auch noch :)

    so meine Lösung ist bestimmt nicht die effektivste, aber es läuft :)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <GuiListView.au3>

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

    ;AdlibRegister("_getProcess",5000) ; alle 5 Sekunden aktualisieren
    AdlibRegister("_checkaction",200) ; alle 500 ms

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

    $GUI = GUICreate("Process Edit v1", 349, 246, 425, 259)
    $pninput = GUICtrlCreateLabel("Prozess Name", 16, 24, 72, 17)
    $Input1 = GUICtrlCreateInput("", 112, 24, 205, 21)
    $btnPause = GUICtrlCreateButton("Pause", 16, 64, 105, 17)
    $btnStart = GUICtrlCreateButton("Start", 128, 64, 97, 17)
    $gOptions = GUICtrlCreateGroup("Optionen", 8, 48, 329, 41)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $btnExit = GUICtrlCreateButton("Exit", 232, 64, 97, 17)
    $g3 = GUICtrlCreateGroup("", 8, 8, 329, 41)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $gProcess = GUICtrlCreateGroup("Prozess Liste", 8, 90, 329, 145)
    $listview_prozess = GUICtrlCreateListView("Process Name ", 20, 110, 110, 120)
    $listview_pid = GUICtrlCreateListView("Process Name ", 140, 110, 160, 120)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    _getProcess() ; einmalig damit Feld gefüllt wird
    _getPid()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnPause
    $PID= InputBox("","wie lautet die PID?","")
    ShellExecute (@ScriptDir & "\pausep.exe", $PID)
    Case $btnStart
    $PID= InputBox("","wie lautet die PID?","")
    ShellExecute (@ScriptDir & "\pausep.exe", $PID & " /r")
    Case $btnExit
    Exit
    EndSwitch
    WEnd

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

    Func _getProcess()
    _GUICtrlListView_DeleteAllItems($listview_prozess)
    $plist = ProcessList()
    For $i = 3 to UBound($plist) -1
    GUICtrlCreateListViewItem($plist[$i][0], $listview_prozess)

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

    Next
    EndFunc

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

    Func _getPid()
    _GUICtrlListView_DeleteAllItems($listview_pid)
    _GUICtrlListView_AddColumn($listview_pid, "PID", 40)
    $plist = ProcessList()
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($plist))
    _GUICtrlListView_AddArray($listview_pid, $plist)
    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($plist), 0)

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

    GUICtrlCreateListViewItem($plist, $listview_pid)

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

    EndFunc

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

    Func _checkaction()
    $progname = _GUICtrlListView_GetItemTextString($listview_prozess)
    GUICtrlSetData($input1,$progname)
    EndFunc

    [/autoit]

    es gibt bestimmt noch einen besseren Weg.

    Einmal editiert, zuletzt von Qeles (9. September 2011 um 14:01)