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

问题描述:

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

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

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

  • 通过应用杀死标签将大致等同的SIGTERM。应用程序可能会拦截它并执行更多处理,因为它基本上是发送“关闭窗口”消息。留言是WM_CLOSE
  • 通过杀死进程选项卡大致相当于SIGKILL。在任务管理器的列表框和“结束进程”按钮中监视用户的操作,或者让监视程序进程可以看到第一个被杀死的时间,您就无法做出任何拦截。

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

+0

不幸的是,无法重新设计应用程序。它是一个拥有数千行代码的10年历史应用程序。 – Umair 2009-10-06 19:36:24

我想你将需要另一个PID来监视你的app.exe的PID,并在当时做必要的工作。

这就要看,如果用户选择“结束任务”应用程序会通知您,您可以处理它see this.

但如果用户选择终止过程中,你有没有办法来处理它你的申请。最简单的方法将是第二个进程,或者您可以注入进程管理器并挂接TerminateProcess API。