我希望能够1.从我的应用程序中检测(以及,如果需要2.中止)操作系统关闭,最好是使用Windows API。
我知道可以使用命令shutdown -a
手动中止关机。在最坏的情况下,我可以ShellExecute这个,但我想知道是否有更好的方法来以编程方式阻止关机。
也许以编程方式通知操作系统即将关闭就足够了 - 如何做到这一点?
答案 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