Warum funktioniert diese Funktion nicht?
-
Hallo,
ich habe eine minimale Funktion schreiben wollen, die anhand einer ProcessId prüft, ob der entsprechende Prozess läuft oder nicht. Leider gibt sie bei mir immer true zurück.
bool IsProcessIdRunning(DWORD dwProcessId) { HANDLE hProcess; bool bSucceeded = false; if(hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwProcessId)) { bSucceeded = true; CloseHandle(hProcess); } return bSucceeded; }
Gibt es vielleicht eine bessere Möglichkeit?
Danke
:schland: 4 - 1
-
Ich kapier's nicht.
Bei mir gibt die Funktion nicht immer true zurück, aber viel zu oft.
Hat zB. firefox.exe die PID 1532, bekomme ich mit GetProcessImageFileName() den firefox.exe Imagenamen zurückgeliefert. Aber mit 1533 auch, mit 1534 auch, und mit 1535 auch, erst ab 1536 nicht mehr.
Was soll das? Laut process explorer gab es gar keine Prozesse mit der ID 1533 - 1535...
-
Keine Ahnung, was ich da verbockt habe...
-
MfG SideWinder
-
Zum Start meines Programms suche ich die ProcessId eines Prozesses, was soweit funktioniert. Die ProcessId ist mit der identisch, die mir das Programm tasklist zu dem Prozess anzeigt.
Etwas später erstelle ich eine while-Schleife:
// ... while(IsProcessIdRunning(dwProcessId)) { // ... } // ...
Auch wenn der Prozess in der Zwischenzeit terminiert wurde, läuft die Schleife einfach weiter.
-
SideWinder schrieb:
MfG SideWinder
DANKE!!!!
-
Bobmann schrieb:
SideWinder schrieb:
MfG SideWinder
DANKE!!!!
Für die Zukunft: http://www.google.com/search?hl=en&q=winapi+check+if+process+is+running&btnG=Google+Search&aq=f&oq=&aqi=
Der erste Link im Suchergebnis...
MfG SideWinder