请问如何在服务中侦测到关机消息?

一个大好人 2006-09-02 04:35:47
请问如何在服务中侦测到关机消息?
...全文
390 16 打赏 收藏 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
shakira008 2006-11-10
  • 打赏
  • 举报
回复
mark
一个大好人 2006-09-04
  • 打赏
  • 举报
回复
可我的服务基本上是运行在win2k系统上的啊
我也建过窗口,收不到,郁闷
wangk 2006-09-04
  • 打赏
  • 举报
回复
在Service中建立窗口,XP以上版本系统可以使用WTSRegisterSessionNotification通知。
一个大好人 2006-09-04
  • 打赏
  • 举报
回复
但是,我服务里面没有主窗口啊
怎么能接收到WM_QUERYENDSESSION消息呢
鄢老 2006-09-04
  • 打赏
  • 举报
回复
自定义一个窗口过程
wangk 2006-09-04
  • 打赏
  • 举报
回复
另外lParam 告诉你是注销还是重启(重启和关机没有区分)
WM_QUERYENDSESSION
lParam
If this parameter includes ENDSESSION_LOGOFF, the user is logging off. (Note that this parameter is a bit mask. To test for this value, use a bit-wise operation; do not test for equality.)
If this parameter is zero, the system is shutting down or restarting (it is not possible to determine which event is occurring).

wangk 2006-09-04
  • 打赏
  • 举报
回复
那么建议你Hook ZwShutdownSystem函数好了。
一个大好人 2006-09-04
  • 打赏
  • 举报
回复
关键还有另外一个问题,如果注销的话,也能收到这个消息,所以,没有意义了
测试过了,如果不登录的话,是收不到这个消息的

看来需要其它办法
:(
wangk 2006-09-04
  • 打赏
  • 举报
回复
你可以测试一下,估计是能收到的,因为即使Service加上与桌面交互的选项,在用户没有登录的时候窗口还是可以建立的。
一个大好人 2006-09-04
  • 打赏
  • 举报
回复
但是,如果不没有桌面呢?
用service就是不登录就能用的啊
如果不登录就关机呢?
wangk 2006-09-04
  • 打赏
  • 举报
回复
注意建立的窗口要在用户桌面下才可以。
Service加上与桌面交互的选项。SERVICE_INTERACTIVE_PROCESS
或者直接用代码交互。
xiaoshi0 2006-09-03
  • 打赏
  • 举报
回复
WM_QUERYENDSESSION消息
hurryboylqs 2006-09-02
  • 打赏
  • 举报
回复
关机时系统会给每个正在运行的进程广播 WM_QUERYENDSESSION 消息
Y___Y 2006-09-02
  • 打赏
  • 举报
回复
mark
believefym 2006-09-02
  • 打赏
  • 举报
回复
不懂,
帮顶
cybermat 2006-09-02
  • 打赏
  • 举报
回复
mark

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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