【问题标题】:Cannot catch Ctrl+Alt+F1 in WinForms MDI. Is it special?在 WinForms MDI 中无法捕获 Ctrl+Alt+F1。很特别吗?
【发布时间】:2015-04-23 08:34:11
【问题描述】:

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

以下几种:

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

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

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

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

【问题讨论】:

    标签: .net winforms keyboard-shortcuts mdi toolstripmenu


    【解决方案1】:

    如果我在我的机器上按 Ctrl+Alt+F1,那么它会激活“英特尔核芯显卡控制面板”。许多机器都预装了一个传播得很广的无用恶意软件,英特尔对他们的软件非常不负责任。当我使用任务管理器(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);
        }
    

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

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

    【讨论】:

    • 很好的答案。我完全同意英特尔软件的说法。杀死英特尔进程后,即使在设计器中,我也可以创建Ctrl+Alt+F1,在这种情况下无需编码。但我不会反对它,我会相应地调整键映射......
    • 次日发现:Ctrl+Alt+F1,Ctrl+Alt+F5,Ctrl+Alt+F6, . 被IgfxHK.exe使用,即使快捷键在其选项中禁用!逆天。多么精通编码!
    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 2011-03-28
    • 2014-01-09
    • 2011-02-17
    • 1970-01-01
    • 2016-07-28
    • 2010-11-23
    • 1970-01-01
    相关资源
    最近更新 更多