如何检测kill进程事件,计算机关闭和计算机崩溃

时间:2014-02-08 12:32:24

标签: c++ windows sql-server-2008

我正在尝试开发一个在后台运行的C ++ MFC应用程序(在Windows中),我有一个问题,我无法找到完整的响应。

我如何检测用户何时尝试通过任务管理器通过终止进程关闭它,何时通过关闭计算机以及此应用程序运行的计算机崩溃来关闭它?

知道我有一个与此应用程序交互的外部数据库(SQL Server 2008)。

1 个答案:

答案 0 :(得分:0)

您可以按照上面的建议处理WM_QUIT。 还有WM_QUERYENDSESSION及其家族。

对于没有GUI的服务,请使用RegisterServiceCtrlHandlerEx获取通知。

另一方面,要在您自己的应用程序崩溃时进行拦截,您会混淆结构化异常处理程序,尽管在发生这种情况时您可能没有可靠的数据。

最后,当计算机本身崩溃时,你无能为力,行为很简单。

无论如何,你不能确保有一个健康的数据库会话,有无限的理由你可能会丢失数据库会话,即使空闲时间太长。

您应该将系统设计为对极端极端情况具有一定的容错能力,例如使用事务,回滚机制,当它到达风扇时的可追踪记录等。