3

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

其中:

  • Ctrl+ Alt+F1
  • Ctrl+ Alt+F2
  • Ctrl+ Alt+F3

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

  • 它是否在某个地方被阻止/使用?是否有一些此类被阻止的键盘快捷键列表?

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

4

1 回答 1

7

如果我在我的机器上按 Ctrl+Alt+F1,那么它会激活“Intel HD Graphics Control Panel”。许多机器都预先安装了一个传播得很广的无用恶意软件,英特尔对他们的软件非常不负责任。当我使用任务管理器(HK = Hot Key)终止 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);
    }

我就不给你“雅达”截图了。否则,一个非常典型的危险是,调用 RegisterHotKey() 的程序总是先于你的快捷键,然后做他们应该做的任何事情。语言栏作为另一个语言栏跳到脑海中。还有很多其他的。使用任务管理器杀死进程以找到作恶者。

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

于 2015-02-21T19:04:53.593 回答