检测桌面是否已锁定

Jon*_*ury 4 winapi desktop

可能重复:
如何以编程方式确定我的工作站是否已锁定?

确定桌面是否为当前登录用户锁定的最佳方法是什么?我查看了MSDN,找不到任何API调用来检测它.我错过了什么,或者我可以使用没有简单的电话?

sno*_*h09 14

答案取决于您是想知道桌面现在是否已锁定,或者是否希望在桌面锁定(并且可能是解锁)时收到通知.这还取决于您计划如何接收所述通知.

  • 如果你真的想要一次性测试,那么这里的答案使用OpenDesktop()SwitchDesktop()打开默认桌面的句柄并激活它 - 如果失败则表示桌面现在已被锁定.

  • 如果您想要锁定/解锁通知,并且您有一个带窗口和消息泵的用户模式应用程序,那么您需要调用WTSRegisterSessionNotification()并捕获该WM_WTSSESSION_CHANGE消息.

  • 如果您需要通知,并且您作为Windows服务运行,则可以通过在状态结构中调用SetServiceStatus()和添加SERVICE_ACCEPT_SESSIONCHANGE来注册会话更改事件dwControlsAccepted.然后,您将收到设置为自己的服务控制HandlerEx()功能的回调.dwControlSERVICE_CONTROL_SESSIONCHANGE


Row*_*haw 0

您可以挂钩WM_WTSSESSION_CHANGE消息