Comment vérifier si un processus donné est en cours d’exécution

J’utilise ShellExecuteEx pour démarrer une application. Après avoir réussi à démarrer la lecture de TShellExecuteInfo.hProcess pour obtenir un TShellExecuteInfo.hProcess du processus démarré.

Je voudrais vérifier périodiquement si le processus lancé par mon application est toujours en cours d’exécution. Deux processus ou plus avec le même nom peuvent être exécutés simultanément et je veux être sûr que mon application vérifie le processus correct.

Je veux pouvoir le faire sur les systèmes Windows de Windows 2000 à ci-dessus.

Je sais qu’il existe WinAPI fonction GetProcessId qui fait exactement ce que je veux, mais ne supporte pas Windows 2000.

Merci pour vos réponses.

Appelez WaitForSingleObject sur cette poignée et utilisez un paramètre de délai d’attente égal à zéro. Si le processus est toujours en cours d’exécution, la fonction retournera Wait_Timeout ; si le processus est terminé, il renverra Wait_Object_0 (car la terminaison du processus provoque la signalisation de ses poignées).

Si vous souhaitez connaître le statut de sortie du processus, appelez GetExitCodeProcess .