C#设置单个热键

时间:2016-03-22 15:48:53

标签: c#

我目前正在尝试将单个密钥设置为全局挂钩。 Howerver,我可能想知道是否可以操作此代码,以便将一个按钮设置为全局热键?

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        [DllImport("user32.dll")]
        private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);

        [DllImport("user32.dll")]
        private static extern bool UnregisterHotKey(IntPtr hWnd, int id);

        const int B = 0x42;
        const int MOD_SHIFT = 0x0004;
        const int WM_HOTKEY = 0x0312;

        private void Form1_Load(object sender, EventArgs e)
        {
            RegisterHotKey(this.Handle, 1, B + MOD_SHIFT, (int)Keys.X);
            RegisterHotKey(this.Handle, 2, B + MOD_SHIFT, (int)Keys.Y);
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            UnregisterHotKey(this.Handle, 1);
        }

        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_HOTKEY && (int)m.WParam == 1)
                MessageBox.Show("Hotkey X pressed.");
            if (m.Msg == WM_HOTKEY && (int)m.WParam == 2)
                MessageBox.Show("Hotkey Y pressed.");
            base.WndProc(ref m);
        }

    }
}

0 个答案:

没有答案