注册系统热键

方法一(在窗体加载时注册,关闭时注销):
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);// //注册热键(窗体句柄,热键ID,辅助键,实键)
[DllImport("user32")]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id);  //注消热键(句柄,热键ID)  
//辅助键说明:
//None = 0,
//Alt = 1,
//crtl= 2,    
//Shift = 4,
//Windows = 8
//如果有多个辅助键则,例如 alt+crtl是3  直接相加就可以了
 使用方法
  RegisterHotKey(this.Handle, 888, 2, Keys.S);//注册Ctrl+S
  重写:WndProc
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case 0x0312:    //这个是window消息定义的注册的热键消息
                    if (m.WParam.ToString().Equals("888"))  //如果是我们注册的那个热键
                        try
                        {
                            MessageBox.Show("你已经按了Ctrl+S");
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.ToString());
                        }
                    break;
            }
            base.WndProc(ref m);
        }
  取消注册:UnregisterHotKey(this.Handle, 888);
        //写好的热键类
        public class WinHotKey
        {
            public WinHotKey()
            {
                //
                // TODO:在此处添加构造函数逻辑
                //
            }
            [DllImport("user32.dll", SetLastError = true)]
            public static extern bool RegisterHotKey(IntPtr hWnd, int id, KeyModifiers fsModifiers, Keys vk);
            [DllImport("user32.dll", SetLastError = true)]
            public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
            [Flags()]
            public enum KeyModifiers
            {
                None = 0,
                Alt = 1,
                Control = 2,
                Shift = 4,
                Windows = 8
            }
        }
------------------------------------------------------------------------------------------------------------------------
方法二:
 [DllImport("user32.dll")]
 private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
 示例(按Shift+A显示窗体):SendMessage(this.Handle, 0x32,0x141,0);


知识共享许可协议
《注册系统热键》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

Warning: file_get_contents(http://ip.taobao.com/service/getIpInfo.php?ip=3.237.71.23) [function.file-get-contents]: failed to open stream: HTTP request failed! in D:\wwwroot\changweihua\wwwroot\v\content\templates\darklight\vrecord.php on line 129

开发技术


开发平台和工具

sitemap     14666.19ms