如何以编程方式确定Windows是否正在关闭?

kam*_*mpi 4 c windows winapi

我正在制作一个可以在随机PC上随机运行的应用程序。它工作正常,但是,如果PC当前正在关闭,则无法阅读WMI,并且会出现一些错误。因此,我需要确定PC当前是否正在关闭,这样我就可以避免这些错误。有人有想法吗?

谢谢!

And*_*ert 5

GetSystemMetrics用索引SM_SHUTTINGDOWN0x2000)调用。


Dav*_*nan 3

创建一个隐藏的顶级窗口并监听WM_ENDSESSION消息。的值wParam将告诉您整个系统是否正在停机,或者用户是否正在注销。

如果您的应用程序是控制台应用程序,则用于SetConsoleCtrlHandler注册以接收关闭通知。

  • 仅供参考:虽然此建议通常有效,但在某些情况下也会失败。无法保证哪个窗口将接收消息(在多窗口应用程序中),因为 Windows 不会将 WM_ENDSESSION 广播到应用程序的所有窗口。 (2认同)