【发布时间】:2012-01-26 05:42:18
【问题描述】:
如何检测 Windows 是否被锁定(Win+L 或被屏幕保护程序锁定)?有可能吗?
【问题讨论】:
-
这是一个老问题,但有新答案:For windows 7 and abowe WTS API can be used
如何检测 Windows 是否被锁定(Win+L 或被屏幕保护程序锁定)?有可能吗?
【问题讨论】:
没有记录的方法来检查会话是否被锁定。然而,有一种方法可以检测到会话被获取锁定。使用 WTSRegisterSessionNotification(),当工作站被锁定时,您将收到带有 WTS_SESSION_LOCK 值的 WM_WTSSESSION_CHANGE 消息。
如果您打算通过服务执行此操作,请务必在 Google 上搜索“会话 0 隔离”以找出不起作用的原因。
【讨论】:
WTSRegisterSessionNotification() 是唯一的选择。 MSDN 也这么说(参见msdn.microsoft.com/en-us/library/windows/desktop/aa376875.aspx):“没有可以调用的函数来确定工作站是否被锁定。要在用户登录时接收通知,请使用WTSRegisterSessionNotification() 函数接收WM_WTSSESSION_CHANGE 消息。”使用HandlerEx SCM 回调(与Handler SCM 回调相反)的服务可以接收来自WTSRegisterSessionNotification() 的SERVICE_CONTROL_SESSIONCHANGE 通知。