这个Blog很强大

导航

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

 

 

辅助键说明:

None = 0, 
Alt = 1, 
crtl= 2,    
Shift = 4, 
Windows = 8

如果有多个辅助键则,例如 alt+crtl是3  直接相加就可以了

posted on 2009-02-09 12:33  这个Blog很强大  阅读(2570)  评论(0编辑  收藏  举报