如何以编程方式中止Windows(XP | Vista)中的关机?

时间:2009-02-26 10:34:22

标签: winapi shutdown system-shutdown

我希望能够1.从我的应用程序中检测(以及,如果需要2.中止)操作系统关闭,最好是使用Windows API。

我知道可以使用命令shutdown -a手动中止关机。在最坏的情况下,我可以ShellExecute这个,但我想知道是否有更好的方法来以编程方式阻止关机。

也许以编程方式通知操作系统即将关闭就足够了 - 如何做到这一点?

2 个答案:

答案 0 :(得分:6)

来自MSDN

  

当用户选择结束会话或应用程序调用其中一个系统关闭功能时,将发送WM_QUERYENDSESSION消息。如果任何应用程序返回零,则会话不会结束。一旦一个应用程序返回零,系统就会停止发送WM_QUERYENDSESSION消息。

因此,我的应用程序的WindowProc现在处理WM_QUERYENDSESSION消息并返回0

没想到它就这么简单;作为奖励,它也适用于Windows 2000。

答案 1 :(得分:1)

关于'简单'返回0以阻止关闭,如果你想以正确的方式进行操作,那就不那么简单了。特别是在Vista上。例如,请阅读http://msdn.microsoft.com/en-us/library/ms700677(VS.85).aspx