如何从WPF应用程序中检测到“锁定此计算机”命令?

时间:2009-03-16 23:35:22

标签: c# wpf desktop locking

更喜欢使用WPF的C#,。Net 3.5中的答案(Windows窗体也可以)

我有一个基本上是工具栏窗口或托盘图标的应用程序。它需要检测用户是否锁定他/她的工作站并离开,以便在集中式系统中更新该人的状态。

我可以使用SystemEvents轻松地检测到会话切换或注销,但我无法终身了解如何在Lock上检测或接收事件。

感谢您的帮助。

3 个答案:

答案 0 :(得分:44)

当您处理Microsoft.Win32.SystemEvents.SessionSwitch事件时(听起来您已经在检测注销时),请检查ReasonSessionSwitchReason .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)