PID Process ID überwachen

  • Guten Morgen Autoit Gemeinde,

    Ich brauch mal wieder etwas Hilfe.

    Ich habe in einem Script einen Process gestartet. Dann habe ich die PID des laufenden Process ermittelt und kann diese auch in einem Loop überwachen bis zur Beendigung. Mein Problem ist nun das ich nicht so lange warten möchte bis der Process beendet wird, sondern in meinem Script fortfahren.

    Gibt es da eine Lösung. Hab schon gesucht aber nichts gefunden, oder betriebsblind.

    Habe mir auch schon überlegt aus dem Script heraus einen zweiten Script zu starten. Aber ich denke es gibt keine Communication zwischen den Scripten? ...oder

    Würde mich über einen Tipp freuen

  • Dann lass doch den Loop mit der PID-Prüfung weg und fahre ganz normal fort. Wo ist da ein Problem.

    Die in der Variable gesperte PID könntest Du auch später nochmal bei Bedarf auf Existenz prüfen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hi autoBert

    danke ich schau mir es einmal an.

    Ich starte ein Registry Backup und das dauert. Derweil soll mein Script weiterlaufen. Wenn der Backup fertig ist wäre eine Nachricht nicht schlecht.

    Spoiler anzeigen

    Func _RegBackUp()

    if fileexists(@ScriptDir & "\backup.reg") then

    FileMove(@ScriptDir & "\backup.reg", @ScriptDir & "\reg\backup.Registry_Typ" & @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC)

    EndIf

    $sLoc = @ScriptDir & "\reg\backup.reg"

    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : @ScriptDir = ' & @ScriptDir & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

    ;~ _RunDos("Regedit /e c:\reg\backup.reg")

    ShellExecute("Regedit.exe", " /e backup.reg") ;/e Backup /s Restore

    ;~ $iPID = WinGetProcess("Regedit.exe")

    ;~ ConsoleWrite("PID kommt GET > " & $iPID & @CRLF)


    While 1

    Local $PID2 = ProcessExists("regedit.exe")

    If Not $PID2 = 0 Then

    ConsoleWrite("PID2 kommt > " & $PID2 & @CRLF)

    Sleep(5000)

    Else

    ConsoleWrite("PID2 > " & $PID2 & " ist fertig" &@CRLF)

    ExitLoop

    EndIf

    WEnd

    if fileexists(@ScriptDir & "\backup.reg") then

    FileMove(@ScriptDir & "\backup.reg", @ScriptDir & "\reg\backup.reg_" & @ComputerName & " _ " & @YEAR & @MON & @MDAY & "_" & @HOUR & @MIN & @SEC)

    EndIf

    EndFunc