我可以通过任务管理器处理我的Windows进程被杀?

时间:2009-10-06 19:04:59

标签: windows process

我有一个Windows C ++应用程序(app.exe)。当应用程序关闭时,我需要执行一些特定于我的应用程序的清理任务。当通过任务管理器终止此进程(app.exe)时会发生什么。假设应用程序仍然响应,我可以在app.exe中以某种方式处理这种情况吗?

我正在寻找类似于Linux中kill <pid>将如何将SIGTERM信号发送到pid指示的进程的内容。然后我可以为SIGTERM注册我自己的信号处理程序并执行清理。

3 个答案:

答案 0 :(得分:10)

有两种方法可以在任务管理器中终止应用程序。

  • 杀死应用程序标签大致相当于SIGTERM。应用程序可以拦截它并进行更多处理,因为它基本上是发送“关闭窗口”消息。要捕获的消息是WM_CLOSE
  • 杀死进程标签大致相当于SIGKILL。除了监视用户在任务管理器的列表框和结束进程按钮中的操作,或者有一个监视程序进程可以看到第一个被杀死时,你无法拦截它。

或者,以不需要清理的方式设计应用程序,或者以在启动时执行清理的方式设计应用程序。

答案 1 :(得分:0)

我认为您需要另一个监控app.exe PID的PID,并在当时完成必要的工作。

答案 2 :(得分:0)

这取决于,如果用户选择“结束任务”您的应用程序,您将收到通知,您可以处理它see this.

但是如果用户选择结束该过程,则无法在应用程序中处理它。最简单的方法是第二个进程,或者你可以注入进程管理器并挂钩TerminateProcess API。