我希望能够1.从我的应用程序中检测(并在需要时2.中止)OS关闭,最好使用Windows API。如何以编程方式中止Windows(XP | Vista)中的关机?
我知道有可能使用命令shutdown -a
手动中止关机在最坏的情况下,我可以ShellExecute这个,但我想知道是否有更好的方法来防止以编程方式关机。
也许这将足以通过编程方式通知操作系统即将关闭 - 如何做到这一点?
我希望能够1.从我的应用程序中检测(并在需要时2.中止)OS关闭,最好使用Windows API。如何以编程方式中止Windows(XP | Vista)中的关机?
我知道有可能使用命令shutdown -a
手动中止关机在最坏的情况下,我可以ShellExecute这个,但我想知道是否有更好的方法来防止以编程方式关机。
也许这将足以通过编程方式通知操作系统即将关闭 - 如何做到这一点?
从MSDN:
当用户选择结束会话,或者当应用程序调用的系统关机功能中的一个的
WM_QUERYENDSESSION
消息被发送。如果任何应用程序返回零,则会话不会结束。一旦一个应用程序返回零,系统将立即停止发送WM_QUERYENDSESSION
消息。
因此,我的应用程序的WindowProc现在处理WM_QUERYENDSESSION
消息并返回0
。
没想到它是这么简单;作为奖励,它也适用于Windows 2000.
关于'简单地'返回0来阻止关机,它不像那样简单,如果你想以正确的方式做到这一点。特别是在Vista上。例如,请同时阅读http://msdn.microsoft.com/en-us/library/ms700677(VS.85).aspx
不错,这不一定是社区维基。 :) – BobbyShaftoe 2009-02-26 11:00:20
那么,这是正确的*足够*对我来说。此消息可能存在一些怪癖或高级操作,CW允许更多人进行编辑。 – Piskvor 2009-02-26 12:14:25