开发中有时碰到要去获取计算机的锁定和解锁事件, 然后在决定在锁定前程序要作些什么, 解锁后程序要作些什么. 如锁定解锁后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
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.