禁用Alt键的正常行为

时间:2013-02-26 13:58:42

标签: c# vb.net winforms hook keyboard-shortcuts

Alt 键时,通常焦点会转到窗口菜单。我需要将其停用全球。因为我的应用程序使用 Alt 键。当用户与 Alt 键结合使用某个键时,我的应用程序会向活动应用程序发送另一个键。所以我只需要在打开菜单时忽略 Alt

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

2 个答案:

答案 0 :(得分:1)

我的第一个答案是 NOT 使用程序的 Alt 键,而是使用 Ctrl 。阻止“正常”事情的发生通常会导致未来的痛苦。

但是如果你必须使用 Alt 键,我会查看this article,它使用消息过滤器尝试在应用程序级别拦截它。

如果这不能满足您的需求,您可能需要查看全局挂钩,this link将让您开始走下去。全局钩子通常被认为是邪恶的,所以如果以上两个建议不起作用,你应该只使用它。您必须确保卸载挂钩,否则您可能会发现需要经常重启计算机以修复奇怪的键盘问题。

答案 1 :(得分:1)

这对我有用:

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

然后添加消息过滤器,如下所示:

Application.AddMessageFilter(new AltKeyFilter());