如何检测Windows被锁定?

Cha*_*ono 6 winapi win32com

如何检测Windows被锁定(Win + L或由屏幕保护程序锁定)?可能吗?

Han*_*ant 11

没有记录的方法来检查会话是否被锁定.但是有一种方法可以检测会话是否锁定.使用WTSRegisterSessionNotification(),当工作站被锁定时,您将获得带有WTS_SESSION_LOCK值的WM_WTSSESSION_CHANGE消息.

如果您打算从服务中执行此操作,请确保谷歌"会话0隔离"以找出无效的原因.

  • 使用`WTSRegisterSessionNotification()`是唯一的选择.MSDN说的很多(参见http://msdn.microsoft.com/en-us/library/windows/desktop/aa376875.aspx):"没有可以调用的功能来确定工作站是否被锁定.要接收通知当用户登录时,使用`WTSRegisterSessionNotification()`函数接收`WM_WTSSESSION_CHANGE`消息." 使用`HandlerEx` SCM回调的服务,而不是`Handler` SCM回调,可以从`WTSRegisterSessionNotification()`接收`SERVICE_CONTROL_SESSIONCHANGE`通知. (4认同)