zoukankan      html  css  js  c++  java
  • 创建系统级热键 C++ builder为例

    系统级热键,不论程序是否有焦点,都能起作用。就像QQ截图上用 ctrl alt A 鍵一样。

    步骤:

      1. 注册热键:
    RegisterHotKey(this->Handle,1008,NULL,VK_F2)//将F2注册为系统级热键
    RegisterHotKey(this->Handle,1009,NULL,VK_F3)
    RegisterHotKey是一个API函数,原型:

    BOOL RegisterHotKey(

        HWND hWnd,    // 接收通知的窗口句柄   
        int id,    // 热键的标识符,区别于其它热键区间(0x0000 0xBFFF) 一个共享的dll标识符区间(0xC000  0xFFFF)
        UINT fsModifiers,    //由vk参数定义的键一起按下的键可以是如ctrl alt shift等等键的结合
        UINT vk     // 所指定的热键的虚拟键码   );

    • 声明消息响应函数和消息映射
      声明消息映射:

    BEGIN_MESSAGE_MAP
            MESSAGE_HANDLER(WM_HOTKEY,TMessage,Start)
    END_MESSAGE_MAP(TForm)//消息映射
    void __fastcall HotKeyMsgFunc(TMessage &msg);//消息响应函数
    • 消息响应函数的实现:
      先说说WM_HOTKEY消息:
      WParam:代表注册的热键的标识符
      lParam:低位表示热键的组合键如Alt SHift等。。高位表示注册的热键
      void __fastcall TForm1::Start(TMessage &msg)
      {
          if(msg.WParam==1008)
          {
              myThread=new TCrushThread(false);
      
          }
          if(msg.WParam==1009)
          {
              myThread->Terminate();
      
      
          }
      
      
      }
    • 释放注册的热键
      主要是在程序将要结束的时候:例如:
      UnregisterHotKey(this->Handle,1008);
      
      UnregisterHotKey(this->Handle,1009);

       
    本人新博客网址为:http://www.hizds.com
    本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段。c++/lua/windows逆向交流群:69148232
  • 相关阅读:
    2020牛客寒假算法基础集训营4-I 匹配星星【贪心】
    P1880 [NOI1995]石子合并【区间dp】
    P1280 尼克的任务
    P1041 传染病控制【暴搜】
    Heavy Transportation POJ
    【空间】C++内存管理
    【编译器】G++常用命令
    【NOIP2011】【Luogu1003】铺地毯
    【Luogu1739】表达式括号匹配
    【Luogu1160】队列安排
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/2166776.html
Copyright © 2011-2022 走看看