1 WM_QUERYENDSESSIONWM_ENDSESSION消息

Windows在电脑关机、强制关机、注销时会向每个正在系统上运行的应用程序发送WM_QUERYENDSESSION消息,如果当前的应用程序不能顺利结束(如在软件上所作的一些修改未保存),如果应用程序处理该消息并返回0,这时Windows就不再继续发送WM_QUERYENDSESSION消息给下一个程序。如果应用程序处理该消息并返回1,则代表应用程序可以正常结束。但是,不管WM_QUERYENDSESSION消息是否返回可以顺利结束,Windows会再发送一个WM_ENDSESSION消息给所有正在运行的程序,而其附带的参数wParam则是指出是否可以顺利结束程序。

这两个消息非常有用,比如我们需要实现一个保存软件配置的功能,就是下一次打开软件恢复到上一次退出的配置,这就要求我们需要在本地保存一份配置信息文件,一般情况下会在软件正常退出时保存所有修改的设置信息,但是在软件正常运行的情况下,电脑强制关机或者强制注销,会导致配置信息无法被保存。所以这个时候需要在软件中对WM_QUERYENDSESSION消息进行响应,对软件的配置信息进行保存,然后再返回1,通知可以正常关闭程序。

参考