无法在WinForms MDI中捕获Ctrl + Alt + F1。这很特别吗?

时间:2015-02-21 18:39:45

标签: .net winforms keyboard-shortcuts mdi toolstripmenu

我的WinForms MDI应用程序在 ToolStripMeniItem 项目中设置了几个键盘快捷键。

以下是:

  • 控制 + 替代 + F1
  • 控制 + 替代 + F2
  • 控制 + 替代 + F3

第一个永远不会触发其菜单项。其他人按预期工作。

  • 是否被阻止/使用?是否有一些这样的被阻止的键盘快捷键列表?

  • 有没有办法如何使用它? (最好只是通过设计师而不添加特殊代码?)

1 个答案:

答案 0 :(得分:6)

如果我在我的机器上按Ctrl + Alt + F1,则会激活“Intel HD Graphics Control Panel”。许多机器已经预先安装了相当广泛的无用恶意软件,英特尔对其软件非常不负责任。当我使用任务管理器(HK =热键)终止igfxHK.exe进程时,MDI应用程序中的此代码工作正常:

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        Console.WriteLine((int)keyData);
        if (keyData == (Keys.F1 | Keys.Control | Keys.Alt)) {
            MessageBox.Show("Yada");
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

我会给你免费的“Yada”截图。否则是一个非常典型的危险,调用RegisterHotKey()的程序总是超越你的快捷键击并做他们应该做的任何事情。语言栏作为另一个跳跃到脑海。还有很多其他的。使用任务管理器杀死进程以找到恶意者。

当然,你无能为力。您可以运行msconfig.exe来禁用它,但这对用户的计算机没有任何用处。这些程序总是选择明显的键,您可以通过从右到左选择快捷键来抵消。最好的办法是避免需要多个修饰符的键,用户也不喜欢它们。