1、向系统注册热键
//第二参数是序号,如果同一个程序中有多个热键,此序号须不同
RegisterHotKey(this->Handle,1,MOD_ALT,VK_F11);
如果不确定序号是多少,可以采用以下方法:
int HotKeyId = GlobalAddAtom("Hello");//HotKeyId作为上面函数的第二参数.此函数参数为任意字符串。此函数保证序号不重复。
2、拦截热键消息
.h文件中声明如下:
protected:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_HOTKEY, TMessage, hotkey)
END_MESSAGE_MAP(TForm)
void __fastcall hotkey(TMessage & msg);
3、Cpp中编写消息处理过程
void __fastcall TForm1::hotkey(TMessage & msg)
{
TForm::Dispatch(&Msg);
if(msg.LParamLo == MOD_ALT && msg.LParamHi == VK_F11)
{
ShowMessage("热键");
}
}
运行时,按下alt + F11将弹出对话框
在窗口的 Close消息中,调用如下代码,释放热键:
//注销热键
UnregisterHotKey(this->Handle,m_arrHotKey[0]);
GlobalDeleteAtom(m_arrHotKey[0]);