How to detect Windows shutdown or logoff

喜夏-厌秋 提交于 2019-11-26 03:38:03

问题


I need to detect when Windows is shutdown (or restarted) or when the user is logging off. I need to properly close the application before the application is closed. I noticed that no exit application event is raised when Windows is closing day.

I read the post Is there a way in c# to detect a Windows shutdown/logoff and cancel that action (after asking the user)

but I\'m not sure of where I should perform the operations before closing. Thanks.


回答1:


Attach an event handler method to the SystemEvents.SessionEnding event, and your handler method will be called each time the event is raised. Handling this event will allow you to cancel the pending log off or shut down, if you wish. (Although that doesn't actually work like it sounds in current operating systems; for more information see the MSDN documentation here.)

If you don't want to cancel the event, but just react to it appropriately, you should handle the SystemEvents.SessionEnded event instead.

You must make sure that you detach your event handlers when the application is closed, however, because both of these are static events.




回答2:


You can use a native solution via pinvoke if your code is not running in a non-interactive session (such as a system service):

//SM_SHUTTINGDOWN = 0x2000
bool bShutDownPending = GetSystemMetrics(SM_SHUTTINGDOWN) != 0;


来源:https://stackoverflow.com/questions/6799955/how-to-detect-windows-shutdown-or-logoff

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!