【发布时间】:2009-03-16 23:35:21
【问题描述】:
希望使用 WPF 在 C#、.Net 3.5 中得到答案(Windows 窗体也可以)
我有一个应用程序,它本质上是一个工具栏窗口或托盘图标。它需要检测用户是否锁定了他/她的工作站并走开,以便在集中式系统中更新此人的状态。
我可以使用 SystemEvents 很容易地检测到会话切换或注销,但我终其一生都无法弄清楚如何检测或接收 Lock 事件。
感谢您的帮助。
【问题讨论】:
希望使用 WPF 在 C#、.Net 3.5 中得到答案(Windows 窗体也可以)
我有一个应用程序,它本质上是一个工具栏窗口或托盘图标。它需要检测用户是否锁定了他/她的工作站并走开,以便在集中式系统中更新此人的状态。
我可以使用 SystemEvents 很容易地检测到会话切换或注销,但我终其一生都无法弄清楚如何检测或接收 Lock 事件。
感谢您的帮助。
【问题讨论】:
当您处理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;
// ...
}
}
【讨论】:
【讨论】:
这是来自 CodeProject 的内容。
http://www.codeproject.com/KB/vb/DetectWindowslockunlock.aspx
【讨论】: