0

Visual C++ を使用していますが、別のプロセスを監視しようとしています。プロセスがいつ終了したかを検出する方法はありますか? つまり、プログラムが終了する直前に、プログラムはイベントを発生させることができます。そのイベントの後、プロセスは終了します。プロセスが終了する前にコードを実行したい。

WMIを使用してプロセスの開始を検出するため、それを行いたい理由です。しかし、一部のプロセスはあまりにも早く終了し、私のコードはまだ実行されていませんが、プロセスはすでに終了しています。

4

1 に答える 1

1

関数を使用しDebugActiveProcessてから、で始まるループを使用しますWaitForDebugEvent- プロセスが終了すると、EXIT_PROCESS_DEBUG_EVENT.

おそらく、他の多くのデバッグ イベントが発生するでしょう [プロセスにアタッチするタイミングと、その後のプロセスの動作によって異なります]。それらについては、呼び出しを発行するだけですContinueDebugEvent- 例外の場合DBG_EXCEPTION_NOT_HANDLEDは使用する必要があり、そうでない場合はDBG_CONTINUE.

が表示されたらEXIT_PROCESS_DEBUG_EVENT、自分のことを実行してから、 を発行しDBG_CONTINUEます。また、指定されたハンドルを閉じて処理する必要がありますLOAD_DLL_DEBUG_EVENT。そうしないと、ハンドルがリークします。

DebugActiveProcess私はこの方法で正確に使用したことはありませんが、これでうまくいくと思います。

詳細については、次の関数を参照してください: Windows デバッグ関数

于 2013-01-07T09:39:34.183 に答える