如何使用winforms创建自定义热键

Posted

技术标签:

【中文标题】如何使用winforms创建自定义热键【英文标题】:how do I create custom hotkey using winforms 【发布时间】:2017-07-28 18:08:53 【问题描述】:

我被要求在有两个组合框的地方创建 winform 应用程序。 第一个框包含 Ctrl+AltCtrl+ShiftAlt+Shift 等选项。第二个框包含 a-z 中的字母和数字 0-9.. 该表单还包含一个名为“注册”的按钮。我的任务是,当我单击注册按钮时,组合框中选择的选项必须被视为热键并且应该注册。请帮助我编写代码,因为我是这项技术的新手。

private void button1_Click(object sender, EventArgs e)

    if (comboBox1.SelectedItem.ToString() != str && comboBox3.SelectedItem.ToString() != s)
    
        str = comboBox1.SelectedItem.ToString();
        byte str1 = (byte)(str)[0];
        s = comboBox3.SelectedItem.ToString();
        byte s1 = (byte)(s)[0];
        RegisterHotKey(this.Handle, this.GetType().GetHashCode(), Win32Modifiers, s1);
    
    base.WndProc(ref msg);


protected override void WndProc(ref Message m)

    if(m.Msg ==  )
    base.WndProc(ref m);

这是我到目前为止所做的

【问题讨论】:

Best way to implement keyboard shortcuts in a Windows Forms application?的可能重复 请给出一个起点,你的进步和你遇到困难的地方。到目前为止,问题描述过于宽泛。人们不会在这里为您编写整个代码 这些热键应该只注册到您的应用程序还是全局热键? 是的..它应该只在我的应用程序中使用..我已经注册了密钥,但我不知道如何将它作为 Wndproc 消息传递.. 【参考方案1】:

我会通过模拟被按下的键来解决这个问题。就像自动打字机一样。 C# Simulate Key Press 看看这个,看看你能不能从那里弄清楚。 祝你好运。

【讨论】:

以上是关于如何使用winforms创建自定义热键的主要内容,如果未能解决你的问题,请参考以下文章

禁用和弦热键,以便我可以使用自定义热键

从 Winforms 应用程序发送全局击键/伪造全局热键

如何自定义键盘的功能

C# WinForm自定义进度条

WPF中的自定义热键

WinForm里的用户自定义控件如何半透明(急急)