zoukankan      html  css  js  c++  java
  • 个人代码库の全局快捷键

    using System;
    using System.Collections.Generic;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;

    static class Hotkey
    {
    /*注:快捷键是通过消息触发的,因此要重载WndProc函数,
    * 在里面添加对快捷键回调消息的处理方法Hotkey.ProcessHotKey(m)。
    * 注意,回调函数(要执行的方法,动作等)不加括号!
    // protected override void WndProc(ref Message m)
    // {
    // base.WndProc(ref m);
    // Hotkey.ProcessHotKey(m);
    // }
    */
    #region 系统api
    [DllImport(
    "user32.dll")]
    [
    return: MarshalAs(UnmanagedType.Bool)]
    static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers fsModifiers, Keys vk);

    [DllImport(
    "user32.dll")]
    static extern bool UnregisterHotKey(IntPtr hWnd, int id);
    #endregion

    /// <summary>
    /// 注册快捷键
    /// </summary>
    /// <param name="hWnd">持有快捷键窗口的句柄</param>
    /// <param name="fsModifiers">组合键</param>
    /// <param name="vk">快捷键的虚拟键码</param>
    /// <param name="callBack">回调函数</param>
    public static void Regist(IntPtr hWnd, HotkeyModifiers fsModifiers, Keys vk, HotKeyCallBackHanlder callBack)
    {
    int id = keyid++;
    if (!RegisterHotKey(hWnd, id, fsModifiers, vk))
    throw new Exception("regist hotkey fail.");
    keymap[id]
    = callBack;
    }

    /// <summary>
    /// 注销快捷键
    /// </summary>
    /// <param name="hWnd">持有快捷键窗口的句柄</param>
    /// <param name="callBack">回调函数</param>
    public static void UnRegist(IntPtr hWnd, HotKeyCallBackHanlder callBack)
    {
    foreach (KeyValuePair<int, HotKeyCallBackHanlder> var in keymap)
    {
    if (var.Value == callBack)
    UnregisterHotKey(hWnd, var.Key);
    }
    }

    /// <summary>
    /// 快捷键消息处理
    /// </summary>
    public static void ProcessHotKey(System.Windows.Forms.Message m)
    {
    if (m.Msg == WM_HOTKEY)
    {
    int id = m.WParam.ToInt32();
    HotKeyCallBackHanlder callback;
    if (keymap.TryGetValue(id, out callback))
    {
    callback();
    }
    }
    }

    const int WM_HOTKEY = 0x312;
    static int keyid = 10;
    static Dictionary<int, HotKeyCallBackHanlder> keymap = new Dictionary<int, HotKeyCallBackHanlder>();
    public delegate void HotKeyCallBackHanlder();
    }

    enum HotkeyModifiers
    {
    MOD_ALT
    = 0x1,
    MOD_CONTROL
    = 0x2,
    MOD_SHIFT
    = 0x4,
    MOD_WIN
    = 0x8
    }
    /*附:虚拟键值表附:常用模拟键的键值对照表。

                          键盘键与虚拟键码对照表

          字母和数字键     数字小键盘的键       功能键         其它键
          键   键码     键   键码       键   键码     键      键码
          A   65       0   96        F1   112     Backspace    8
          B   66       1   97        F2   113     Tab       9
          C   67       2   98        F3   114     Clear      12
          D   68       3   99        F4   115     Enter      13
          E   69       4   100       F5   116     Shift      16
          F   70       5   101       F6   117     Control     17
          G   71       6   102       F7   118      Alt       18
          H   72       7   103       F8   119     Caps Lock    20
          I   73       8   104       F9   120     Esc       27
          J   74       9   105       F10  121     Spacebar    32
          K   75       *   106       F11  122     Page Up     33
          L   76       +   107       F12  123     Page Down    34
          M   77       Enter 108       --   --     End       35
          N   78       -   109       --   --      Home      36
          O   79       .   110       --   --      Left Arrow   37
          P   80       /   111       --   --      Up Arrow    38
          Q   81       --   --       --   --      Right Arrow   39
          R   82       --   --       --   --      Down Arrow    40
          S   83       --   --       --   --      Insert      45
          T   84       --   --       --   --      Delete      46
          U   85       --   --       --   --      Help       47
          V   86       --   --       --   --      Num Lock     144
          W   87          
          X   88      
          Y   89      
          Z   90      
          0   48      
          1   49      
          2   50       
          3   51       
          4   52       
          5   53       
          6   54       
          7   55       
          8   56       
          9   57  
    */
    作者:Asion Tang
    凡是没有注明[转载]的文章,本Blog发表的文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    python易错点2
    python易错点1
    Spring:注解组件注册
    KubeSphere建立多租户系统
    Centos7.7下KubeSphere最小化安装和定制化配置安装
    安装create-react-app
    查看react版本等信息
    react自动生成React组件命令
    sqlserver 随机数
    Error while downloading 'http://java.sun.com/xml/ns/javaee/javaee_web_services_client_1_2.xsd'
  • 原文地址:https://www.cnblogs.com/AsionTang/p/1885715.html
Copyright © 2011-2022 走看看