一般来说,关机或Logff后,Windows会传依序送出WM_QUERYENDSESSION的信息给每个Process,如果中间有一个Process不能顺利结束(例如:Word修改后未存档,而出现是否存档,但我们按取消),这时该信息执行的结果会传回False(0),这时Windows也就不再继续送WM_QUERYENDSESSION给下一个Proccess。反之,如果所有的Process都可以顺利结束(也就是每个送出的WM_QUERYENDSESSION都传回True),那才代表以以顺利结束。
不管WM_QUERYENDSESSION最后的结果是可以顺利结束或不能顺利结束,Windows会再送一个WM_ENDSESSION的信息给所有的Process
Public Const WM_QUERYENDSESSION = &H11
'关机,注销,重新启动时或其他程序调用了ExitWindows API函数,系统依次发送给所有程序的消息
Public Const WM_ENDSESSION = &H16
'当系统发出WM_QUERYENDSESSION消息后,等待检查WM_QUERYENDSESSION消息的返回值, 再接着发送此消息给应用程序,系统并根据返回值决定是否关机,注销或重启
楼主,这个你怎么拦截消息并区分是重启还是关机?
[此贴子已经被作者于2022-9-20 13:54编辑过]