获取windows系统锁定和解锁计算机事件

获取windows系统锁定和解锁计算机事件   

 

开发中有时碰到要去获取计算机的锁定和解锁事件, 然后在决定在锁定前程序要作些什么, 解锁后程序要作些什么. 如锁定解锁后3D的设备组件会Lost也就是变为无效,需要重新获取, 否则3D不会得到刷新.

 

那么我们要怎么做呢?

 

可以用RegisterSessionNotification 和UnRegisterSessionNotification来注册和反注册.从而获取通知事件, 有事件时就会给注册的窗口发送WM_WTSSESSION_CHANGE 消息.对应wparam参数可以解析为一下:

  // wParam values:
  WTS_CONSOLE_CONNECT = 1;
  WTS_CONSOLE_DISCONNECT = 2;
  WTS_REMOTE_CONNECT = 3;
  WTS_REMOTE_DISCONNECT = 4;
  WTS_SESSION_LOGON = 5;
  WTS_SESSION_LOGOFF = 6;
  WTS_SESSION_LOCK = 7;
  WTS_SESSION_UNLOCK = 8;
  WTS_SESSION_REMOTE_CONTROL = 9;

 

除了上述方法外还有可以使用全局钩子截取user32.dll中LockWorkStation来获取. 或者改写winlogon对应的dll. 不过还是最前面的方法来的简单和安全.

 

想了解后两种方法请参看:

http://topic.csdn.net/u/20070516/09/132db03e-d0d8-4a92-9862-8a1e1e41b224.html

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *