gpt4 book ai didi

c++ - 使用 C++,如何在终止之前检测进程

转载 作者:行者123 更新时间:2023-11-28 07:49:14 25 4
gpt4 key购买 nike

我正在使用 Visual C++我正在尝试监视另一个进程。有没有办法检测进程何时终止?我的意思是,就在它终止之前,程序可以引发一个事件。发生该事件后,该过程将终止。我希望我的代码在进程终止之前运行。

我之所以要这样做是因为我使用 WMI 来检测启动的进程。但是有些进程结束的太快了,我的代码还没运行,进程就已经结束了。

最佳答案

您将使用 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 Debugging Functions

关于c++ - 使用 C++,如何在终止之前检测进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14192549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com