Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Läuft ein Prozess mit einer bestimmten PID? (https://www.delphipraxis.net/95071-laeuft-ein-prozess-mit-einer-bestimmten-pid.html)

delphis spassbremse 30. Jun 2007 03:25


Läuft ein Prozess mit einer bestimmten PID?
 
und glich die nächste Frage xD

und zwar ich möchte ermitteln, ob ein prozess mit einer
bestimmten Prozess ID läuft.

Habe mir folgenden Code geschrieben, der leider nur Teilweise
funktioniert...

Delphi-Quellcode:
function pid_da (pid: Integer) : Bool;
var
  pidhandle: THandle;
begin
  pidhandle := OpenProcess(PROCESS_QUERY_INFORMATION, False, pid);
  if pidhandle <> 0 then
  begin
   result := false;
  end else
  begin
   result := true;
  end;
  CloseHandle(pidhandle);
end;
Wenn ich den Prozess damit prüfe und
er wirklich läuft, dann geht es...

wenn er aber nach der prüfung beendet wurde,
und erneut geprüft wird, bleibt das ergebnis immer
noch auf true....

Weiß vllt. jemand, woran das liegt?

MFG

Björn

SirThornberry 30. Jun 2007 07:00

Re: Läuft ein Prozess mit einer bestimmten PID?
 
CloseHandle solltest/brauchst du nur aufrufen wenn du auch ein gültiges Handle bekommen hast.

bitsetter 30. Jun 2007 07:44

Re: Läuft ein Prozess mit einer bestimmten PID?
 
Zitat:

Zitat von delphis spassbremse
wenn er aber nach der prüfung beendet wurde,
und erneut geprüft wird, bleibt das ergebnis immer
noch auf true....

Hi,

wenn das Processhandle bei dir 0 ist, also der Process nicht geöffnet worden ist, dann wird bei deiner Funktion Result = true zurückgegeben wenn ich das richtig sehe.

EDIT: Du könntest es auch so abändern:
Delphi-Quellcode:
result := LongBool(pidhandle);

Luckie 30. Jun 2007 12:58

Re: Läuft ein Prozess mit einer bestimmten PID?
 
Muss es nicht umgekehrt lauten? Wenn das von OpenProcess zurückgelieferte Handle ungleich null ist, dann existeirt der Prozess?

delphis spassbremse 30. Jun 2007 13:11

Re: Läuft ein Prozess mit einer bestimmten PID?
 
jo hab mich verschrieben... :stupid:

ist aber leider nicht das Problem...

[EDIT=1] Und irgendwie ist das Handle IMMER 1928 => :wiejetzt: [/EDIT]

[EDIT=2]
Da fällt mir grad was ein...
ich könnte alle laufenden ProzessID´s
in eine StringList packen und
dann mit einer schleife pid mit pid vergleichen...

nur müsst ich jetzt wissen, wie ich alles PID´s in
eine StingList packe...

Links wären evtl hilfreich
[/EDIT]

MFG

Björn

Luckie 30. Jun 2007 13:26

Re: Läuft ein Prozess mit einer bestimmten PID?
 
Mit MSDN-Library durchsuchenEnumProcesses kannst du alle Prozesse auflisten. Beispielcode sollte es auch im Forum geben.

Was ist den ndas für ein Prozess? Eventuell fehlen dir die nötigen Rechte.

delphis spassbremse 30. Jun 2007 13:45

Re: Läuft ein Prozess mit einer bestimmten PID?
 
ich hab zum testen notepad und mspaint genommen


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz