windows 系统注销对部分函数执行的影响

1、MFC::onTimer: 当注销时,onTimer事件将失效;怀疑当系统注销时,系统将窗口销毁了,而OnTimer是居于系统发送的ON_WM_TIMER来告诉窗口执行的回调函数的;即当timer时间到时,系统发送ON_WM_TIMER消息,而此时窗口被销毁了,接收不到对应的消息,故无法执行回调; 

问题的处理方案:可以用timeSetEvent替换OnTimer,timeSetEvent不依赖系统消息与窗口句柄实现。具体参见MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/dd757634(v=vs.85).aspx

2、ExitWindowsEX() :该函数是居于登录用户来做的:注销、关机、重启系统;如果当前用户已被注销,则在注销后调用以上程序执行关机、重启等操作将失败;(LockWorkStation在注销时,也执行失败)

问题的处理方案:可以用InitiateSystemShutdown函数替换;具体参见:MSDN:https://docs.microsoft.com/zh-cn/windows/desktop/Shutdown/system-shutdown-functions

3、监视系统注销操作:参考:https://blog.csdn.net/yangyang031213/article/details/74668458

3.1、注册Session变化的触发器:WTSRegisterSessionNotification(在初始化时注册)

如:WTSRegisterSessionNotification(m_hWnd, NOTIFY_FOR_THIS_SESSION);

3.2、重写窗口消息函数:WindowProc

3.3、关闭、退出时清理:

WTSUnRegisterSessionNotification(m_hWnd);

通过以上方法可以监听:登录、注销、锁屏、用户切换、睡眠、休眠、唤醒或电源设置改变等操作

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值