.Net 注册热键

来源:互联网 发布:h3c交换机查看端口流量 编辑:程序博客网 时间:2024/05/21 23:44

希望你的程序能使用热键吗?在.Net中如何注册一个热键呢?热键和快捷键一样吗?

1 热键和快捷键能完成差不多的功能。但有所区别。

快捷键是指当前你的程序窗口为活动窗口时,快捷键才会发挥作用。而且一般说来,快捷键是不需要什么辅助键的。

热键是只要你程序在运行,热键就会起作用。如QQ程序:Ctrl+Alt+A

2.如何注册和卸载热键。

[DllImport("user32")]
        public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);
        //注册热键的api
        [DllImport("user32")]
        public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //注册热键(窗体句柄,热键ID,辅助键,实键)
            RegisterHotKey(this.Handle, 888, 2, Keys.E);
        }

        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case 0x0312: //这个是window消息定义的 注册的热键消息
                    if (m.WParam.ToString().Equals("888")) //如果是我们注册的那个热键
                        MessageBox.Show("你按了ctrl+E");
                    break;
            }
            base.WndProc(ref m);
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            //注消热键(句柄,热键ID)
            UnregisterHotKey(this.Handle, 888);
        }