请问如何使我的热键永远起作用??我编了一个程序,如果是程序是当前窗口的话热键起作用,可是一失去当前窗口的位置热键就不趣作用了,如何能使热键永远起作??(50分)

  • 主题发起人 主题发起人 wulfalone
  • 开始时间 开始时间
W

wulfalone

Unregistered / Unconfirmed
GUEST, unregistred user!
才来,delphi也是才自学了几个星期,请多多指教!!
 
主要代码
procedure WMHotkeyHandle(var Msg:TMessage);message WM_HOTKEY; //响应敏感键按键消息

var
HotkeyId: THandle;

procedure TForm1.WMHotkeyHandle(var Msg:TMessage);
begin
if (Msg.LParamHi=$41) and (msg.lparamLo=MOD_CONTROL or mod_Alt) then
begin
Msg.Result:=1; //该消息已经处理
ShowMessage('');
end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
//建立热键
HotkeyId:=GlobalAddAtom(Pchar('UserDefineHotKey'))-$C000; //减去$C000是为了保证取值范围的限制
RegisterHotkey(Handle,Hotkeyid,MOD_CONTROL or MOD_Alt, $41);//敏感键为ctrl+Alt+A
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
//释放热键
UnRegisterhotkey(Handle,HotkeyId);
DeleteAtom(HotKeyID);
end;
 
用RegisterHotKey函数,例子
cpp文件:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
RegisterHotKey(this->Handle,1,NULL,VK_MULTIPLY );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
UnregisterHotKey(this->Handle,1);
}
void __fastcall TForm1::OnHotKey(TMessage &Msg)
{
if(Msg.WParam==1)
{
if(show)
{
ShowWindow(hw,SW_HIDE );
show=false;
}
else
{
ShowWindow(hw,SW_SHOW );
show=true;
}
}
}
hpp文件:
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void __fastcall OnHotKey(TMessage &Msg);
BEGIN_MESSAGE_MAP

MESSAGE_HANDLER(WM_HOTKEY ,TMessage,OnHotKey)

END_MESSAGE_MAP(TForm)


 
不是当前窗口就无效,那也叫热键?
 
后退
顶部