如何通过控制台应用程序延迟Windows中的系统关闭?

时间:2012-04-27 11:29:31

标签: windows visual-c++ console-application

我有一个正在运行的应用程序,并且用户已经给出了关闭系统的命令,但我想推迟关闭直到我的应用程序运行。完成应用程序的工作后,系统应该关闭。

2 个答案:

答案 0 :(得分:3)

这取决于您所谈论的Windows版本。在Windows XP中,有一些消息,如WM_QUERYENDSESSION,您可以响应阻止关闭。 (由于您是一个控制台应用程序,在控制台应用程序仍在运行时,您可能需要生成一个小窗口应用程序才能执行此操作。)

但Vista使应用程序很难阻止关机。 (微软声称根本无法做到,但我确实看到Visual Studio 2010设法做到这一点。)你可以延迟关机大约五秒钟(但请记住,可能有很多其他应用程序试图做一堆在相同的五秒钟内的东西)。此时,用户会获得一个UI,显示所有未正确关闭的应用程序。使用Vista +,您可以调用ShutdownBlockReasonCreate让用户知道为什么打断您的应用程序是一个坏主意,但这实际上并没有阻止用户这样做。

以下是了解MSDN如何应对shutdown的切入点。

答案 1 :(得分:0)

当窗口关闭时发送WM_QUERYENDSESSION并且应用程序发送回TRUE或FALSE取决于当前状态。 关于此消息,我发现它: http://msdn.microsoft.com/en-us/library/ms700677(v=vs.85).aspx

也许它会帮助你

相关问题