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 回答