黑马程序员技术交流社区

标题: C# 系统热键注册实现代码 [打印本页]

作者: 陈君    时间: 2014-9-5 22:30
标题: C# 系统热键注册实现代码
简单点说就是为程序制定快捷键勒。。很多软件都带热键功能的,通过以下方式可以实现2个键或3个键的快捷键,相当之使用,具体实现方法看后文吧。
先引用using System.Runtime.InteropServices; 的命名空间,
然后在合适的位置加上如下代码就OK。。注意:Form1_Load和Form1_FormClosed不能直接copy哦~

  1. [DllImport("user32")]
  2. public static extern bool RegisterHotKey(IntPtr hWnd,int id,uint control,Keys vk );
  3. //注册热键的api
  4. [DllImport("user32")]
  5. public static extern bool UnregisterHotKey(IntPtr hWnd, int id);

  6. private void Form1_Load(object sender, EventArgs e)
  7. {
  8. //注册热键(窗体句柄,热键ID,辅助键,实键)
  9. RegisterHotKey(this.Handle, 888, 2, Keys.A);
  10. }
  11. private void Form1_FormClosed(object sender, FormClosedEventArgs e)
  12. {
  13. //注消热键(句柄,热键ID)
  14. UnregisterHotKey(this.Handle, 888);
  15. }
  16. protected override void WndProc(ref Message m)
  17. {
  18. switch (m.Msg)
  19. {
  20. case 0x0312: //这个是window消息定义的 注册的热键消息
  21. if (m.WParam.ToString().Equals("888")) //如果是我们注册的那个热键
  22. MessageBox.Show("你按了ctrl+a");
  23. break;
  24. }
  25. base.WndProc(ref m);
  26. }
复制代码

辅助键说明:
None = 0,
Alt = 1,
crtl= 2,
Shift = 4,
Windows = 8
如果有多个辅助键则,例如 alt+crtl是3 直接相加就可以了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2