這樣吧,我給妳壹個例程,包括了ResiterHotKey的用法和消息處理的用法,妳仔細看看吧。
這個程序有壹個窗體Form1,Form1上註冊了壹個熱鍵Ctrl+F11,以後只要這個程序在運行,不管在什麽,妳壹按Ctrl+F11,
就會彈出壹個消息框。
//Unit.H
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
private: // User declarations
//這個函數就是消息處理函數,通過VCL_MESSAGE_HANDLER宏和指定消息相連
void __fastcall WMHotKey(TMessage &Msg);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
//以下三句就是消息處理,可以在BEGIN和END之間加入多個HANDLER
BEGIN_MESSAGE_MAP
//處理WM_HOTKEY消息,註冊熱鍵之後,按下熱鍵就會向指定窗口發出該消息
VCL_MESSAGE_HANDLER(WM_HOTKEY, TMessage, WMHotKey);
END_MESSAGE_MAP(TForm);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//Unit1.CPP
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//這就是消息處理函數的實現
void __fastcall TForm1::WMHotKey(TMessage &Msg)
{
SetForegroundWindow(Handle);
ShowMessage("Hot Key Registered!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
RegisterHotKey(Handle, 0x1000, MOD_CONTROL, VK_F11);
//以上那句註冊熱鍵,Handle是窗口句柄,0x1000是壹個ID號,設置該熱鍵在線程中
//的唯壹值,第三個參數表示要按下那些系統鍵,最後壹個是按鍵的虛擬鍵碼
//具體可參見MSDN幫助
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
UnregisterHotKey(Handle, 0x1000);
//註銷熱鍵,0x1000和上面對應,指明註銷哪個熱鍵
}
//---------------------------------------------------------------------------