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

更喜欢使用WPF的C#,。Net 3.5中的答案(Windows Forms也没关系)

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

我可以使用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; // ... } } 

您需要p / invoke WTSRegisterSessionNotification。 示例代码在这里