zoukankan      html  css  js  c++  java
  • Delphi RegisterHotKey 设置系统热键

    Symbolic
    constant name
    Value
    (hexadecimal)
    Keyboard (or mouse) equivalent
    VK_LBUTTON 01 Left mouse button
    VK_RBUTTON 02 Right mouse button
    VK_CANCEL 03 Control-break processing
    VK_MBUTTON 04 Middle mouse button (three-button mouse)
    VK_BACK 08 BACKSPACE key
    VK_TAB 09 TAB key
    VK_CLEAR 0C CLEAR key
    VK_RETURN 0D ENTER key
    VK_SHIFT 10 SHIFT key
    VK_CONTROL 11 CTRL key
    VK_MENU 12 ALT key
    VK_PAUSE 13 PAUSE key
    VK_CAPITAL 14 CAPS LOCK key
    VK_ESCAPE 1B ESC key
    VK_SPACE 20 SPACEBAR
    VK_PRIOR 21 PAGE UP key
    VK_NEXT 22 PAGE DOWN key
    VK_END 23 END key
    VK_HOME 24 HOME key
    VK_LEFT 25 LEFT ARROW key
    VK_UP 26 UP ARROW key
    VK_RIGHT 27 RIGHT ARROW key
    VK_DOWN 28 DOWN ARROW key
    VK_SELECT 29 SELECT key
    VK_PRINT 2A PRINT key
    VK_EXECUTE 2B EXECUTE key
    VK_SNAPSHOT 2C PRINT SCREEN key
    VK_INSERT 2D INS key
    VK_DELETE 2E DEL key
    VK_HELP 2F HELP key
      30 0 key
      31 1 key
      32 2 key
      33 3 key
      34 4 key
      35 5 key
      36 6 key
      37 7 key
      38 8 key
      39 9 key
      41 A key
      42 B key
      43 C key
      44 D key
      45 E key
      46 F key
      47 G key
      48 H key
      49 I key
      4A J key
      4B K key
      4C L key
      4D M key
      4E N key
      4F O key
      50 P key
      51 Q key
      52 R key
      53 S key
      54 T key
      55 U key
      56 V key
      57 W key
      58 X key
      59 Y key
      5A Z key
    VK_NUMPAD0 60 Numeric keypad 0 key
    VK_NUMPAD1 61 Numeric keypad 1 key
    VK_NUMPAD2 62 Numeric keypad 2 key
    VK_NUMPAD3 63 Numeric keypad 3 key
    VK_NUMPAD4 64 Numeric keypad 4 key
    VK_NUMPAD5 65 Numeric keypad 5 key
    VK_NUMPAD6 66 Numeric keypad 6 key
    VK_NUMPAD7 67 Numeric keypad 7 key
    VK_NUMPAD8 68 Numeric keypad 8 key
    VK_NUMPAD9 69 Numeric keypad 9 key
    VK_SEPARATOR 6C Separator key
    VK_SUBTRACT 6D Subtract key
    VK_DECIMAL 6E Decimal key
    VK_DIVIDE 6F Divide key
    VK_F1 70 F1 key
    VK_F2 71 F2 key
    VK_F3 72 F3 key
    VK_F4 73 F4 key
    VK_F5 74 F5 key
    VK_F6 75 F6 key
    VK_F7 76 F7 key
    VK_F8 77 F8 key
    VK_F9 78 F9 key
    VK_F10 79 F10 key
    VK_F11 7A F11 key
    VK_F12 7B F12 key
    VK_F13 7C F13 key
    VK_F14 7D F14 key
    VK_F15 7E F15 key
    VK_F16 7F F16 key
    VK_F17 80H F17 key
    VK_F18 81H F18 key
    VK_F19 82H F19 key
    VK_F20 83H F20 key
    VK_F21 84H F21 key
    VK_F22 85H F22 key
    VK_F23 86H F23 key
    VK_F24 87H F24 key
    VK_NUMLOCK 90 NUM LOCK key
    VK_SCROLL 91 SCROLL LOCK key
    VK_LSHIFT A0 Left SHIFT key
    VK_RSHIFT A1 Right SHIFT key
    VK_LCONTROL A2 Left CONTROL key
    VK_RCONTROL A3 Right CONTROL key
    VK_LMENU A4 Left MENU key
    VK_RMENU A5 Right MENU key
    VK_PLAY FA Play key
    VK_ZOOM FB Zoom key

    //定义全局变量
    var 
      QuitId, ShowMe: Integer;

      //热键响应函数
      procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;

      //注册热键
      QuitId := GlobalAddAtom('MyQuitId') - $C000;
      RegisterHotKey(Handle, QuitId, MOD_CONTROL, VK_F2);
     //注册热键
      ShowMe := GlobalAddAtom('MyShowMe') - $C000;
      RegisterHotKey(Handle, ShowMe, MOD_CONTROL, VK_F1);
      注:HotKeyId的合法取之范围是0x0000到0xBFFF之间,GlobalAddAtom函数得到的值在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。
      热键的辅助按键包括Mod_Ctrl、Mod_Alt、Mod_Shift,对于Windows兼容键盘还支持Windows键,即其键面上有Windows标志的那个键,其值为Mod_win。
      注:handle是一个特殊的变量,它表示当前窗口的句柄。
      这个函数你应该能句举一反三了吧。
      原理:
      一旦热键设置成功,在程序应用过程中如果有相应的键被按下,Windows系统都会给你的应用程序发送一个消息WM_HOTKEY,不管你的应用程序是否为当前活动的。其中WM_HOTKEY消息的格式为:
      idHotKey=(int)wParam;//该参数在设置系统级的热键有用,一般不予使用
      fuModifiers=(UINT)LOWORD(lParam);//热键的辅助按键
      uVirtKey=(UINT)HIWORD(lParam);//热键的键值

      //释放热键
      UnRegisterHotKey(handle, QuitId);
      UnRegisterHotKey(handle, ShowMe);

      procedure TfrmMain.HotKeyDown(var Msg: Tmessage);
      begin
        if (Msg.LparamLo = MOD_CONTROL) AND (Msg.LParamHi = VK_F2) then //退出
        begin
          Close;
        end;
        if (Msg.LparamLo = MOD_CONTROL) AND (Msg.LParamHi = VK_F1) then
        begin
          Close;
        end;
      end;
    View Code



  • 相关阅读:
    10. 王道考研-树与二叉树
    Shell基础论证实例
    关系型数据库与非关系型数据库区别
    中高级测试工程师面试题
    idea中cucumber环境搭建
    Java开发中对Redis的基本操作总结
    TestNG 单元测试框架(针对于testNG.xml配置)
    jmeter(四十五)常用Beanshell脚本
    Jmeter(二十一)_脚本两种参数化
    Jmeter(十五)_上传与下载
  • 原文地址:https://www.cnblogs.com/blogpro/p/11340291.html
Copyright © 2011-2022 走看看