• Hi @ all,
    Habe soeben beschlossen ich veröffentliche
    meinen ProzessManager .
    Er kann:


    • Prozesse anzeigen
    • Prozesse schließen
    • Prozesse starten
    • Prozesse blocken

    Bekannte Bugs:

    • ProcessList Updated nicht

    Behobene Bugs:

    • Programm lässt sich vom Hide Modus aus nichtmehr in den Show Modus versetzen.(danke an Raupi)

    Credits gehen dabei an:

    • Mich
    • Kogoro(Block funktion)
    • Greenhorn(Prozess anzeige da ich da meine Probleme hatte :) )


    Neue Funktionen kommen dabei immer hinzu.

    MfG Roggazzz

    • Offizieller Beitrag

    Hab mal deinen Anzeigefehler behoben:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <ListViewConstants.au3>
    #include <Date.au3>
    Opt("TrayMenuMode", 1)

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

    Global $aProcessList
    ; $aidLVItems enthält die IDs der Elemente des Listenansicht-Steuerelements.
    Global $aidLVItems [1] = [0] ; erstem Element Null zuweisen
    Global $drive,$dir,$fname,$ext, $lID

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

    Opt("TrayMenuMode", 1)
    #Region

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

    $Form = GUICreate("RogProgs TaskManager", 409, 599, 292, 142)
    GUICtrlCreateLabel("Offene Prozesse:", 8, 8, 122, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $ID_ListView = GUICtrlCreateListView("Prozessname|PID", 0, 32, 408, 502)
    ;~ GUICtrlSendMsg(-1, 0x101E, 0, 200)
    ;~ GUICtrlSendMsg(-1, 0x101E, 1, 200)
    $idBlock = GUICtrlCreateButton("Prozess blocken", 16, 544, 91, 25, 0)
    $idClose = GUICtrlCreateButton("Prozess beenden", 120, 544, 99, 25, 0)
    $idTime = GUICtrlCreateLabel( _Now(), 200, 8, 150, 17)
    $Hide = GUICtrlCreateButton("Hide", 328, 544, 75, 25, 0)
    $MenuItem1 = GUICtrlCreateMenu("Menü")
    $Start = GUICtrlCreateMenuItem("Prozess starten", $MenuItem1)
    $Close = GUICtrlCreateMenuItem("Prozess schließen", $MenuItem1)
    $Block = GUICtrlCreateMenuItem("Prozess blocken", $MenuItem1)
    $M_Exit = GUICtrlCreateMenuItem("Exit", $MenuItem1)
    $MenuItem2 = GUICtrlCreateMenu("Info")
    $Info = GUICtrlCreateMenuItem("Info", $MenuItem2)

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

    TraySetClick("9")
    $Show = TrayCreateItem("Show")
    $Exit = TrayCreateItem("Exit")
    GUISetState()
    #EndRegion

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

    If (Not UpdateProcessList ($aProcessList, $ID_LISTVIEW, $aidLVItems)) Then

    MsgBox (266256, "Fehler", "Es konnten keine Prozesse aufgelistet werden!")
    EndIf

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

    While True
    Switch GUIGetMsg ( )
    Case $GUI_EVENT_CLOSE,$M_Exit
    AdlibDisable()
    Exit
    Case $Info
    MsgBox(0,"","© by Roggazzz und Kogoro")
    Case $Start
    $Programmname=InputBox("Prozess starten","Bitte geben sie den Prozessnamen ein.")
    ShellExecute($Programmname)
    Case $idClose,$Close
    $Programmname=InputBox("Prozess beenden","Bitte geben sie den Prozessnamen ein.")
    ProcessClose($Programmname)
    Case $Hide
    GUISetState(@SW_HIDE, $Form)
    Case $idBlock,$Block
    $Programmname=InputBox("Prozess blocken","Bitte geben sie den Prozessnamen ein.")
    IniWrite("Daten.ini","",$Programmname,"")
    EndSwitch
    Switch TrayGetMsg()
    Case $Show
    GUISetState(@SW_SHOW, $Form)
    GUISetState(@SW_RESTORE, $Form)
    Case $Exit
    AdlibDisable()
    Exit
    EndSwitch
    WEnd
    ; UpdateProcessList (ByRef $aProcesses, $idListView, $aidLVItems)
    ; Diese Funktion aktualisiert die Listenansicht.
    ; Rückgabe: True bei Erfolg, sonst False.
    ; [in/out]$aProcesses - Arrayvariable in der die Prozessliste gespeichert werden soll
    ; [in] $idListView - Identifizierer des Listenansicht-Steuerelements
    ; [in] $aidLVItems - Arrayvariable, welche die Elemente der Listenansicht enthält
    Func UpdateProcessList (ByRef $aProcesses, $idListView, ByRef $aidLVItems)

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

    $aProcesses = ProcessList ( )

    If (Not IsArray ($aProcesses)) Then _
    Return False ; Fehler

    ;-- Wenn weniger Elemente in der Listenansicht, als Prozesse ...
    If ($aidLVItems[0] < $aProcesses[0][0]) Then

    ; Array vergrößern.
    ReDim $aidLVItems [$aProcesses[0][0] + 1]


    ;- Wenn aidLVItems[0] ungleich Null ...
    If ($aidLVItems[0]) Then

    ; Existierende Elemente in der Listenansicht aktualisieren
    For $i = 1 To $aidLVItems[0]
    GUICtrlSetData ($aidLVItems[$i], $aProcesses[$i][0] & "|" & $aProcesses[$i][1])
    Next

    ; Neue Elemente in der Listenansicht erzeugen
    For $i = $aidLVItems[0] + 1 To $aProcesses[0][0]
    $aidLVItems[$i] = GUICtrlCreateListViewItem ($aProcesses[$i][0] & _ ; Prozessname
    "|" & _
    $aProcesses[$i][1], _ ; PID
    $idListView)
    Next

    ;- aidLVItems[0] gleich Null ...
    Else

    ; Ein Element/Prozess in der Listenansicht erzeugen.
    For $i = 1 To $aProcesses[0][0]

    $aidLVItems[$i] = GUICtrlCreateListViewItem ($aProcesses[$i][0] & _ ; Prozessname
    "|" & _
    $aProcesses[$i][1], _ ; PID
    $idListView)
    Next
    EndIf

    $aidLVItems[0] = $aProcesses[0][0]

    ;-- Wenn mehr Elemente in der Listenansicht, als Prozesse ...
    ElseIf ($aidLVItems[0] > $aProcesses[0][0]) Then

    ; Existierende Elemente in der Listenansicht aktualisieren
    For $i = 1 To $aidLVItems[0]
    If ($i <= $aProcesses[0][0]) Then
    GUICtrlSetData ($aidLVItems[$i], $aProcesses[$i][0] & "|" & $aProcesses[$i][1])
    Else
    GUICtrlDelete ($aidLVItems[$i])
    EndIf
    Next

    ; Array verkleinern.
    ReDim $aidLVItems [$aProcesses[0][0] + 1]
    $aidLVItems [0] = $aProcesses[0][0]

    EndIf

    Return True ; Erfolg

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

    EndFunc

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

    Func Wache ()
    $MarkProcess=IniReadSection("Daten.ini","")
    If Not @error Then
    For $i = 0 to $MarkProcess[0][0]
    If ProcessExists($MarkProcess[$i][0]) Then
    ProcessClose($MarkProcess[$i][0])
    Endif
    Next
    EndIf
    Endfunc

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


    Der Fehler kahm daher, das du 2 Guis erstellt hast und beim Show das Handle der 1. leeren GUI genommen hast .