• 创建系统级热键 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
  • 相关阅读:
    HTTP 协议 简述
    Git 远程仓库相关
    Git 冲突问题
    单例模式
    extends Thread 与 implements Runnable 的区别
    正则表达式语法大全
    [Hadoop源码解读](六)MapReduce篇之MapTask类
    [Hadoop源码解读](五)MapReduce篇之Writable相关类
    [Hadoop源码解读](四)MapReduce篇之Counter相关类
    [Hadoop源码解读](三)MapReduce篇之Job类
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/2166776.html
Copyright © 2020-2023  润新知