| 网站首页 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛 |
 
| 技术教程首页 | 开发语言 | WEB开发 | .NET技术 | 数据库 | 操作系统 | 网页制作 |
 
 
您现在的位置: 编程中国 >> 技术教程 >> .NET技术 >> C# >> C#技术资料 >> 正文
  ►  C#如何注册系统热键
C#如何注册系统热键
作者:chenjin145    阅读人次:……    文章来源:本站原创    发布时间:2007-3-10    网友评论()条
 

原帖及讨论:http://bbs.bccn.net/thread-99964-1-1.html

[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);

解除註冊

private void Form2_Load1(object sender, System.EventArgs e)
{
            RegisterHotKey(this.Handle,888,2,Keys.A);
            //handle:這個窗體的handle   888:這個熱鍵的標誌id    2:crtl鍵   A: a鍵
}

private void Form2_Load1(object sender, System.EventArgs e)
{
             UnregisterHotKey(this.Handle,888);    
            //handle:這個窗體的handle   888:上面那個熱鍵的標誌id  
}


protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case 0x0312:    //這個是window消息定義的   註冊的熱鍵消息
                    if(m.WParam.ToString().Equals("888"))  //如果是我們註冊的那個熱鍵
                        MessageBox.Show("你按了ctrl+a");
                    break;
            }            
            base.WndProc (ref m);
        }


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

這是熱鍵的定義  alt+crtl是3  直接相加就可以了




如果用sendmessagea這個api  就是

SendMessage(this.Handle,WM_SETHOTKEY,0x45a, 0)

//WM_SETHOTKEY 是 0x32
//0x45a    高字節是contrl鍵  低字節是a b c d   所以5a是z的ascii   4是alt  也就是alt+z

 

 
文章录入:静夜思    责任编辑:静夜思 
  • 上一篇文章:

  • 下一篇文章:

  •  
    相关文章
    没有相关文章
    原创地带
    24小时热门帖子