Prozess Status

  • Hi all

    Ich hoffe mal ich bin hier richtig, denn das Forum verwirrt mich noch ein bischen :D (Beitrag Numero Uno)
    Mit der Suche hab ich nix gefunden und da wollte ich hier mal fragen, ob es mit Autoit eine Möglichkeit gibt, den Prozess Status eines Programms abzufragen.

    Mit Status mein ich ich das, was einem im Taskmanager angezeigt wird, z.B. "Wird ausgeführt" oder "Keine Rückmeldung". Ich frage also nicht danach, ob ein Prozess überhaupt existiert. Wie meine Markierung schon zeigt bin ich hauptsächlich auf das "Keine Rückmeldung" aus, da ich den Prozess dann beenden und neustarten lassen will.

    Wie komme also an den Prozess Status?

    Danke im voraus für eure Antworten.

    Mit freundlichen Grüßen

    olaH

    Einmal editiert, zuletzt von Halo (5. April 2009 um 12:38)

  • Echt?!

    Welches Array-Element is das den? Direckt finden kann ich das hier net, oder mein Englisch ist zu low :D

  • Ist das nicht egal? :P ich glaube mal wenn der Prozess keine Rückmeldung meldet das sind alle Arrays = 0 wenn er läuft eben nicht...

    edit: Oh ne sehe grade das bei Array 0 - 2 geprüft wird wieviele bytes >bisher< gelesen/geschrieben wurden... heißt das Array ist auch bei nem Prozess ohne Rückmeldung nicht 0...

    2 Mal editiert, zuletzt von ChaosKeks (4. April 2009 um 12:47)

  • Vllt. geht sowas wie das:

    [autoit]

    $prz = ProcessGetStats(<Prozess>)
    WHile 1
    sleep(500)
    $prz2 = ProcessGetStats(<Prozess>)
    If $prz2[0] = $prz[0] Then ExitLoop
    Wend
    MsgBox(0,"","")

    [/autoit]
  • Die Funktion gibt für ein Fenster aus, ob es hängt ;) Für einen Prozess kann man das nicht machen, nur für seine Fenster.
    Um die Fenster von einem Prozess zu bekommen, kannst du diese Funktion verwenden: _ProcessGetWindows

    [autoit]

    Func _IsHungAppWindow($hWnd,$text="")
    ; Prog@ndy
    If Not IsHWnd($hWnd) Then
    $hWnd = WinGetHandle($hWnd,$text)
    If @error Then Return SetError(1,0,0)
    EndIf
    Local $result = DllCall("user32.dll", "int", "IsHungAppWindow", "hWnd", $hWnd)
    If @error Then Return SetError(1,@error,0)
    Return $result[0]<>0
    EndFunc

    [/autoit]