Wie kann ich prüfen, ob eine Process ID gültig ist?



  • Hallo,
    momentan bin ich ein Programm am fertigstellen und muss noch ein paar Feinheiten implementieren. Dazu sollen die Widgets nur aktiv sein, wenn die eingegebene Process ID (pid) existiert und der Prozess geöffnet werden kann.
    Weiß jemand, welche API-Funktion kann mir hier einen brauchbaren Wert zurückliefern?

    Danke



  • Wenn du wissen willst ob du ein Handle zu einem Prozess bekommen kannst, dann versuch einfach das Handle zu öffnen (z.B. OpenProcess unter Windows).



  • Danke, hatte vorher auch schon ähnlich gedacht, aber wusste nicht, wie ich einen Wert von HANDLE zu int bekomme.
    Habs dann doch nochmal versucht und mit** *(__int64*)&hProcess **hat es geklappt 🙂



  • Von dem Handle zur ID: GetProcessId.

    Um zu prüfen, ob ein Prozess mit der ID gültig ist, könntest du EnumProcesses (ein Wrapper drumherum ist empfehlenswert) aufrufen und prüfen, ob sich die gesuchte ID darunter befindet.
    Undokumentierte Features ausnutzen ist selten eine gute Idee, zumal es ja entsprechende Funktionen gibt.



  • KratzKatz schrieb:

    und mit** *(__int64*)&hProcess **hat es geklappt 🙂

    Ja, das "klappt". Leider ist es doppelt und dreifach falsch.
    Wozu willst du den HANDLE Wert überhaupt als Integer?


Anmelden zum Antworten