禁用Alt键的正常行为

本文关键字:常行 Alt 禁用 | 更新日期: 2023-09-27 18:01:17

当按下Alt键时,焦点通常会转到窗口的菜单。我需要全局禁用。因为我的应用程序使用Alt键。当用户与Alt键同时按下某个键时,我的应用程序将发送另一个键给活动应用程序。所以我只需要忽略Alt当它打开菜单。

我是新的编程,我正在寻找VB。. Net或c#代码

禁用Alt键的正常行为

我的第一个答案是使用Alt键为您的程序和使用Ctrl代替。阻止"正常"的事情发生通常会导致未来的痛苦。

但是如果您必须使用Alt键,我会查看这篇使用消息过滤器尝试在应用程序级别拦截它的文章。

如果这没有达到你想要的效果,你可能需要查看全局钩子,这个链接将带你开始。全局钩子通常被认为是邪恶的,所以你应该只在上面两个建议不起作用的情况下使用它。你必须确保你卸载了钩子,否则你可能会发现你需要经常重新启动你的电脑来修复奇怪的键盘问题。

这个适合我:

    private class AltKeyFilter : IMessageFilter
    {
        public bool PreFilterMessage(ref Message m)
        {
            return m.Msg == 0x0104 && ((int)m.LParam & 0x20000000) != 0;
        }
    }

然后像这样添加消息过滤器:

Application.AddMessageFilter(new AltKeyFilter());

您可以尝试这样做:

public void HandleKeyDown(object sender, keyEventArgs e)
{
  //do whatever you want with or without Alt
  
  if (e.Modifiers == Keys.Alt)
    e.SuppressKeyPress = true;
}

这应该允许您使用Alt为任何你想要的,但防止它激活菜单栏。注意,e.SuppressKeyPress = true也设置了e.Handled = true。https://learn.microsoft.com/en us/dotnet/api/system.windows.forms.keyeventargs.suppresskeypress?view=windowsdesktop - 5.0