我已使用此处发布的代码在C#中的控制台应用程序中定义了多个全局热键:https://stackoverflow.com/a/3654821/3179989
有一段时间,它完美无缺。但是,在我播放几个窗口并打开/关闭不同的应用程序之后,热键被禁用并且不再工作。我在调试模式下运行我的代码,当发生这种情况时,我设置断点并看到方法不是用热键触发的。
问题: 1)具有相同热键的另一个应用程序是否可能禁用我的应用程序注册的所有热键? 2)有没有检查注册的热键是否仍然注册?如果没有重新注册? (这是我能想到的重新注册热键的唯一解决方案)
我的代码就像这样简单:
//在主要方法中
mHotKeyManager.RegisterHotKey(Keys.D1, KeyModifiers.Alt);
mHotKeyManager.RegisterHotKey(Keys.D2, KeyModifiers.Alt);
mHotKeyManager.RegisterHotKey(Keys.D3, KeyModifiers.Alt);
mHotKeyManager.RegisterHotKey(Keys.D4, KeyModifiers.Alt);
mHotKeyManager.RegisterHotKey(Keys.D5, KeyModifiers.Alt);
mHotKeyManager.HotKeyPressed += new EventHandler<HotKeyEventArgs>(HotKeyPressed);
while (true)
{
Thread.Sleep(100);
}
//这是HotKeyPressed方法
public static void HotKeyPressed(object sender, HotKeyEventArgs e)
{
string PressedHotkey = e.Modifiers.ToString() + " " + e.Key.ToString();
switch (PressedHotkey)
{
case "Alt D1":
// do something
break;
case "Alt D2":
// do something
break;
case "Alt D3":
// do something
break;
case "Alt D4":
// do something
break;
case "Alt D5":
// do something
break;
default:
break;
}
}