使用c#检查工作站锁定/解锁更改

7 c# windows environment session-state

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

如何检测(在运行时)Windows用户锁定其屏幕(Windows + L)并再次解锁时.我知道我可以全局跟踪键盘输入,但是可以用环境变量来检查这样的事情吗?

Ben*_*n S 15

一个SessionSwitch事件可能是这个你最好的选择.检查通过SessionSwitchEventArgs传递的SessionSwitchReason,找出它是什么样的开关并做出适当的反应.


And*_*ant 3

您可以通过 WM_WTSSESSION_CHANGE 消息获取此通知。您必须通知 Windows 您希望通过 WTSRegisterSessionNotification 接收这些消息,并使用 WTSUnRegisterSessionNotification 取消注册。

这些帖子应该对 C# 实现有帮助。

http://pinvoke.net/default.aspx/wtsapi32.WTSRegisterSessionNotification

http://blogs.msdn.com/shawnfa/archive/2005/05/17/418891.aspx

http://bytes.com/groups/net-c/276963-trapping-when-workstation-locked

  • IMO,pinvoke 是使用 .NET 时的最后一种解决方案。最好首先使用框架内置的方法。 (2认同)