2

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

4

2 回答 2

3

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

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

这是了解如何处理shutdown的 MSDN 入口点。

于 2012-04-27T16:37:41.630 回答
0

当 Windows 关闭时发送 WM_QUERYENDSESSION 和应用程序回传 TRUE 或 FALSE 取决于当前状态。关于这条消息,我找到了它:http: //msdn.microsoft.com/en-us/library/ms700677 (v=vs.85).aspx

也许它可以帮助你

于 2012-04-27T12:32:05.890 回答