更喜欢使用WPF的C#,。Net 3.5中的答案(Windows窗体也可以)
我有一个基本上是工具栏窗口或托盘图标的应用程序。它需要检测用户是否锁定他/她的工作站并离开,以便在集中式系统中更新该人的状态。
我可以使用SystemEvents轻松地检测到会话切换或注销,但我无法终身了解如何在Lock上检测或接收事件。
感谢您的帮助。
答案 0 :(得分:44)
当您处理Microsoft.Win32.SystemEvents.SessionSwitch
事件时(听起来您已经在检测注销时),请检查Reason
是SessionSwitchReason
.SessionLock
:
using Microsoft.Win32;
// ...
// Somewhere in your startup, add your event handler:
SystemEvents.SessionSwitch +=
new SessionSwitchEventHandler(SystemEvents_SessionSwitch);
// ...
void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
switch(e.Reason)
{
// ...
case SessionSwitchReason.SessionLock:
// Do whatever you need to do for a lock
// ...
break;
case SessionSwitchReason.SessionUnlock:
// Do whatever you need to do for an unlock
// ...
break;
// ...
}
}
答案 1 :(得分:2)
答案 2 :(得分:1)
以下是CodeProject的内容。
http://www.codeproject.com/KB/vb/DetectWindowslockunlock.aspx