注册系统热键,既是象oicq的Ctrl+Alt+Z一样,不论程序激活未激活,
都将响应应用程序。
方法如下:
private:
void __fastcall WMHotKey(TMessage &Msg);
public:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_HOTKEY,TMessage,WMHotKey);
END_MESSAGE_MAP(TForm);
实现:
void __fastcall TForm1::WMHotKey(TMessage &Msg)
{
switch(Msg.WParam)
{
case 0x1001:
SetForegroundWindow(Handle);
TrayIconCD->Restore();
break;
case 0x1002:
mciSendString("Set cdaudio door closed wait",NULL,0,Handle);
break;
case 0x1003:
mciSendString("Set cdaudio door open wait",NULL,0,Handle);
break;
default:;
}
}
另外,在构造函数中:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//Others Codes
if(RegisterHotKey(Handle,0x1001,MOD_CONTROL|MOD_ALT,'Z')==0)
ShowMessage("Hotkey 'Ctrl+Alt+Z' Register failed");
if(RegisterHotKey(Handle,0x1002,MOD_CONTROL,VK_LEFT)==0)
ShowMessage("Hotkey 'Ctrl+Left' Register failed");
if(RegisterHotKey(Handle,0x1003,MOD_CONTROL,VK_RIGHT)==0)
ShowMessage("Hotkey 'Ctrl+Right' Register failed");
}
void __fastcall TForm1::Form1Close(...)
{
//Others Codes
UnregisterHotKey(Handle,0x1001);
UnregisterHotKey(Handle,0x1002);
UnregisterHotKey(Handle,0x1003);
}