A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈君 金牌黑马   /  2014-9-5 22:30  /  828 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

简单点说就是为程序制定快捷键勒。。很多软件都带热键功能的,通过以下方式可以实现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 直接相加就可以了

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马