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