如何注册全局热键(c++builder)

 
  1. 这样吧,我给你一个例程,包括了ResiterHotKey的用法和消息处理的用法,你仔细看看吧。   
  2.   这个程序有一个窗体Form1,Form1上注册了一个热键Ctrl+F11,以后只要这个程序在运行,不管在什么,你一按Ctrl+F11,   就会弹出一个消息框。   
  3.   //Unit.H   
  4.   //---------------------------------------------------------------------------   
  5.     
  6.   #ifndef   Unit1H   
  7.   #define   Unit1H   
  8.   //---------------------------------------------------------------------------   
  9.   #include   <Classes.hpp>   
  10.   #include   <Controls.hpp>   
  11.   #include   <StdCtrls.hpp>   
  12.   #include   <Forms.hpp>   
  13.   //---------------------------------------------------------------------------   
  14.   class   TForm1   :   public   TForm   
  15.   {   
  16.   __published:         //   IDE-managed   Components   
  17.                   void   __fastcall   FormCreate(TObject   *Sender);   
  18.                   void   __fastcall   FormDestroy(TObject   *Sender);   
  19.   private:         //   User   declarations   
  20.       //这个函数就是消息处理函数,通过VCL_MESSAGE_HANDLER宏和指定消息相连   
  21.       void   __fastcall   WMHotKey(TMessage   &Msg);   
  22.   public:                 //   User   declarations   
  23.                   __fastcall   TForm1(TComponent*   Owner);   
  24.                   //以下三句就是消息处理,可以在BEGIN和END之间加入多个HANDLER   
  25.                   BEGIN_MESSAGE_MAP   
  26.                       //处理WM_HOTKEY消息,注册热键之后,按下热键就会向指定窗口发出该消息   
  27.                       VCL_MESSAGE_HANDLER(WM_HOTKEY,   TMessage,   WMHotKey);   
  28.                   END_MESSAGE_MAP(TForm);   
  29.   };   
  30.   //---------------------------------------------------------------------------   
  31.   extern   PACKAGE   TForm1   *Form1;   
  32.   //---------------------------------------------------------------------------   
  33.   #endif   
  34.     
  35.     
  36.   //Unit1.CPP   
  37.   //---------------------------------------------------------------------------   
  38.     
  39.   #include   <vcl.h>   
  40.   #pragma   hdrstop   
  41.     
  42.   #include   "Unit1.h"   
  43.   //---------------------------------------------------------------------------   
  44.   #pragma   package(smart_init)   
  45.   #pragma   resource   "*.dfm"   
  46.   TForm1   *Form1;   
  47.   //---------------------------------------------------------------------------   
  48.   __fastcall   TForm1::TForm1(TComponent*   Owner)   
  49.                   :   TForm(Owner)   
  50.   {   
  51.   }   
  52.   //---------------------------------------------------------------------------   
  53.   //这就是消息处理函数的实现   
  54.   void   __fastcall   TForm1::WMHotKey(TMessage   &Msg)   
  55.   {   
  56.       SetForegroundWindow(Handle);   
  57.       ShowMessage("Hot   Key   Registered!");   
  58.   }   
  59.   //---------------------------------------------------------------------------   
  60.   void   __fastcall   TForm1::FormCreate(TObject   *Sender)   
  61.   {   
  62.       RegisterHotKey(Handle,   0x1000,   MOD_CONTROL,   VK_F11);   
  63.       //以上那句注册热键,Handle是窗口句柄,0x1000是一个ID号,设置该热键在线程中   
  64.       //的唯一值,第三个参数表示要按下那些系统键,最后一个是按键的虚拟键码   
  65.       //具体可参见MSDN帮助   
  66.   }   
  67.   //---------------------------------------------------------------------------   
  68.     
  69.   void   __fastcall   TForm1::FormDestroy(TObject   *Sender)   
  70.   {   
  71.       UnregisterHotKey(Handle,   0x1000);   
  72.       //注销热键,0x1000和上面对应,指明注销哪个热键   
  73.   }   
  74.   //---------------------------------------------------------------------------
  75. 转自:http://topic.csdn.net/t/20010604/16/145838.html

你可能感兴趣的:(C++Builder)