Windows 11 Calculator - Prozess PID herausfinden

  • Hallo Zusammen,

    ich wollte für einen anderen Post hier im Forum ein Beispiel erstellen und dabei ist mir aufgefallen, dass ich bei Win11, wenn ich den integrierten Rechner öffne und mir die PID mit ProcessExists ausgeben will, hier nichts zurück kommt, mit ProcessList geht es aber.

    Mache ich da einen Fehler?

    AutoIt
    Local $aProcessList = ProcessList("CalculatorApp.exe")
    For $i = 1 To $aProcessList[0][0]
        ConsoleWrite(@CRLF & $aProcessList[$i][0] & @CRLF & "PID: " & $aProcessList[$i][1]) ; funktioniert
    Next
    
    $pidCalc    = ProcessExists("CalculatorApp.exe")
    ConsoleWrite(@CRLF & "PID: " & $pidCalc & @CRLF) ; funktioniert nicht

    Gruß Marcel

  • ich vermute mal, dass niemand mehrer Rechner gleichzeitig offen hat.

    Möglicherweise liegt das Problem in der Anwendung, die da "geprüft" wird.
    Bei mir wird auch das erwartete Ergebnis ausgegeben.

    PS: ProcessExist stoppt nach dem ersten Fund, da es bei ProcessExist nicht um die gesamte Anzahl gleicher Anwendungen geht, sondern einzig um die Existenz.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • Schnuffel , danke ich prüfe weiter :) Kommt mir auch komisch vor, dass es machmal nicht geht.

    So funktioniert es bei mir auch, lasse ich das Sleep weg, kommt auch ein 0 Wert zurück. Scheinbar braucht die Anwendung zu lange oder das Scxript ist zu schnell.

    AutoIt
    $pid = ProcessExists("CalculatorApp.exe")
    ;MsgBox(0,"",$pid,2)
    
    If $pid = 0 Then
    	Run("calc.exe")
    	Sleep(1500)
    	$pid = ProcessExists("CalculatorApp.exe")
    EndIf
    
    MsgBox(0,"",$pid,5)

    Einmal editiert, zuletzt von gmmg (20. Februar 2026 um 10:04)

  • Moin gmmg,

    das Zeitproblem sollte sich auch mit

    Code
    $pid = ProcessWait("CalculatorApp.exe", 1) ; länger als 1 Sekunde sollte das nicht brauchen, wenn doch, ist $pid = 0

    lösen lassen.

  • Hallo Zusammen,

    ich würde hier zumachen und auf den folgenden Post verweisen. Dort geht es ja im Beispiel um das konkrete Problem, dass bei bestimmten Programmen die PID nicht gelesen wird.

    Moombas
    20. Februar 2026 um 13:09

    Danke

    Gruß Marcel

  • Achso du startest erst den Prozess und willst gleich die PID abfragen.
    Dann kann das natürlich sein, dass der Prozess noch nicht direkt danach in der Prozessliste auftaucht.

    Jetzt musst du aber mal das Endziel erläutern, damit klar ist was du eigentlich tatsächlich erreichen möchtest.
    Wenn es nur darum geht ein Programm zu starten und dessen Prozess-ID zu erhalten, dann reicht ein Run() alleine aus - der Rückgabe von Run ist ja eben diese Prozess-ID.

  • Hallo AspirinJunkie,

    im Post #8 stehenden Forumslink geht es weiter. Als ich für dieses Thema was getestet hatte, ist mir aufgefallen, dass "calc.exe" nicht die korrekte Prozess ID direkt nach dem starten liefert.

    Moombas
    20. Februar 2026 um 13:09