zoukankan      html  css  js  c++  java
  • c# 注册热键功能

    using System.Runtime.InteropServices;

    //注册热键的api

    [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

  • 相关阅读:
    使用 PHPMailer 发邮件
    安装phpssdb扩展:
    CI安全
    CI调试应用程序
    Sphinx的GEO距离搜索 [转载]
    Lua开发环境搭建(Mac OS X)
    MySQL 的索引和最左前缀原则
    PHP解码Json(json_decode)字符串返回NULL的原因及解决方法(转载)
    PHP连接MySQL报错"No such file or directory"的解决办法
    web 性能优化指南阅读笔记
  • 原文地址:https://www.cnblogs.com/zhahost/p/1221482.html
Copyright © 2011-2022 走看看