2011-06-27 15 views
6

ShellExecuteExを使用してアプリケーションを起動しています。 開始した後、TShellExecuteInfo.hProcessを読み込んで、開始したプロセスのハンドルを取得します。処理中に所定のプロセスが実行中であるかどうかを確認する方法

私のアプリケーションで起動したプロセスがまだ実行中であるかどうか定期的に確認したいと思います。 同じ名前の2つ以上のprocessessを同時に実行することができ、アプリケーションが正しいプロセスをチェックしていることを確認します。

WindowsシステムでWindows 2000以上でこれを実行できるようにしたいと考えています。

私は私が望むものを正確にやっているWinAPIの機能GetProcessIdがあることを知っているが、それは、Windowsに2000

をサポートしていませんが、あなたの答えをいただき、ありがとうございます。

+0

プロセスのハンドルがあるので、「自分のアプリケーションが正しいプロセスをチェックしていることを確認したい」という意味がわかりません。あなたはすでにハンドルを持っているので、どうしてそれは正しいプロセスではないでしょうか? –

+0

@David私はsomoneが私のような解決策を示唆している場合にだけ、私の要求を強調する必要があると感じました:http://www.delphitricks.com/source-code/windows/check_if_a_process_is_running.html – Wodzu

答えて

14

そのハンドル上でWaitForSingleObjectを呼び出し、ゼロのタイムアウトパラメータを使用します。プロセスがまだ実行中の場合、関数はWait_Timeoutを返します。プロセスが終了した場合(プロセスの終了は、そのハンドルがになるために発生するためを合図。)、それはWait_Object_0を返します

あなたは、プロセスの終了ステータスが何であるかを知りたい場合は、GetExitCodeProcessを呼び出します。

+0

'GetExitCodeProcess '戻り値を再度テストする' STILL_ACTIVE'。 –

+1

終了コード*が「Still_Active」でない限り、@David。それでは、まだ別の方法で区別する必要があります。もしあなたが実際には*退屈なコードを気にしなければ、 'WaitForSingleObject'を呼び出すこともできます。 –

+0

ありがとうございました。 – Wodzu

関連する問題