Windows注销当前用户时,怎么让系统向程序发送一次WM_QUERYENDSESSION后的消息处理中告诉Windows不要再发送?

NothingRemained 2006-04-03 10:05:05
对应的消息处理函数大致是
BOOL OnQueryEndSession()

MSDN上说:
Windows stops calling the function after the function returns FALSE(0) and send message WM_ENDSESSION with wParam as 0(FALSE) for any application having returned non-zero value for this function.

出现的问题是:在OnQueryEndSession()中问用户是否要退出程序,Windows注销当前用户时,用户选择否后会继续接受到2次WM_QUERYENDSESSION,从而弹出了3次对话框

现在的问题是:不知道怎么实现send message WM_ENDSESSION with wParam as 0(FALSE) for any application having returned non-zero value for this function.以停止后两次的WM_QUERYENDSESSION发送
...全文
249 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
palmax 2006-04-07
  • 打赏
  • 举报
回复
可MSDN上还说:

WM_QUERYENDSESSION

The WM_QUERYENDSESSION message is sent when the user chooses to end the session or when an application calls the ExitWindows function. If any application returns zero, the session is not ended. The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.

最后一句说的是只要有一个应用程序返回0时系统就停止发送WM_QUERYENDSESSION,你又怎么保证你的程序是第一个告诉系统返回0的应用程序呢?

还有就是你的程序是不是有问题,我在自己机器上测试,当注销选"否"的时候,对话框不出现,选"是",对话框也只弹出一次,没出现过多次弹出的情况

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧