einen von Autoit gestartetes Programm überwachen und gegebenenvals beenden

  • Hallo Leute


    ich habe ein kleines Problem mit einem Programm das ich geschrieben habe.

    Folgendes Scenario ich startet mit RunAsWait ein externes Programm das läuft
    auch ohne Probleme und beendet sich auch wieder.

    Nur ab und zu beendet sich das Externe Programm nicht mehr. So jetzt zu meiner
    Frage kann ich bevor ich das Programm mit RunAsWait starte eine Routine starten
    die den gestarteten Prozess überwacht und diesen gegebenenfalls killt.


    Vieleicht hat ja jemand eine Idee.


    mfg


    MC Baldrian

    Solange
    du den anderen sein Anderssein nicht verzeihen kannst, bist du noch weit ab vom
    Wege der Weisheit.

  • Du kannst RunAsWait nachbauen (So können noch andere Code-Schnipsel in die Prozedur mit eingeschleust werden).

    [autoit]


    Func _RunAsWait_Timeout($iTimeout, $sUsername, $sDomain,$sPassword, $iLogonFlag, $sProgram, $sWorkingDir = @SystemDir, $iShowFlag = @SW_HIDE, $iOptFlag = 0x10000)
    ;chesstiger
    $iPID = RunAs($sUsername, $sDomain, $sPassword, $iLogonFlag, $sProgram, $sWorkingDir, $iShowFlag, $iOptFlag)
    $hTimer = TimerInit()
    While ProcessExists($iPID)
    Sleep(10) ;CPU-Auslastung
    If TimerDiff($hTimer) >= $iTimeout Then Return SetError(1, 0, True)
    WEnd
    Return SetError(0, 0, True)
    EndFunc

    [/autoit]

    Benutzung dürfte klar sein ($iTimeout -> Zeit, nach der die gestartete Anwendung terminiert wird).
    Diese Funktion setzt Error auf 1, wenn die Anwendung terminiert werden musste, also das Timeout überschritten worden ist.^^

    lg chess