【问题标题】:How to identify the keyboard keys using C#如何使用 C# 识别键盘按键
【发布时间】:2009-09-21 10:42:14
【问题描述】:

我有一个 C# 应用程序在后台运行。现在我想在系统锁定时停止这个应用程序。我怎样才能做到这一点。非常感谢您对此提供任何帮助。

感谢豪根的解决方案。您能否建议我是否应该包含任何 Dll 来处理“Microsoft.Win32.SystemEvents.SessionSwitch”这个事件?以及该代码应该驻留在哪一层。我猜它在业务层。对此有何建议?

【问题讨论】:

  • 你的问题和键盘有什么关系?
  • 您是否正在考虑捕捉 Win+L 键盘组合?我认为这不会解决您的问题,因为计算机仍然可以使用其他方法锁定...
  • 你的意思是锁定,如Win+L,还是锁定如冻结,崩溃?
  • 好吧,如果系统崩溃了,我想你不必再担心运行应用程序了 :-)

标签: c# keyboard key identify


【解决方案1】:

简单。为

创建一个事件处理程序
Microsoft.Win32.SystemEvents.SessionSwitch

事件。在其中,检查 SessionSwitchEventArgs.Reason 属性中的值 SessionSwitchReason.SessionLock

Shyam:很抱歉没有马上回复你。您不必包含任何特殊的 DLL。 SystemEvents 类在 System 程序集中。此处理程序是否属于业务层 - 我猜它属于包含您的服务类的任何项目 - 从 WindowsService 继承的那个。

public MyService()
{
    InitializeComponent();
    SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
}

void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
    if (_isRunning)
    {
        // Pause
    }
}

【讨论】:

  • 非常感谢。我会尝试这种方法并让你知道。
  • 我们是否应该包含任何 Dll 来处理此事件?
  • 你能建议我在哪一层引发这个事件吗?
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
相关资源
最近更新 更多