type TForm1 = class(TForm) btn1: TButton; btn2: TButton; procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); private public //关键位置:建立一个子程序 处理wm_hotkey的消息 procedure gethotkeymsg(var msg:TMessage); message wm_hotkey; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); var j_i:LongBool; begin j_i:=RegisterHotKey(Form1.handle,7999,0,113);//注册热键(f2) //参数3的0为注册单热键 为1则是组合键ALT+参数4,为2则是组合键Crtl+参数4 if j_i <>True then begin ShowMessage('F2热键已注册'); end; end; procedure TForm1.gethotkeymsg(var msg:TMessage); begin if msg.WParam=7999 then begin ShowMessage('热键F2起作用了'); end; end; procedure TForm1.btn2Click(Sender: TObject); begin UnregisterHotKey(Form1.Handle,7999); end;
关键位置1.TForm类下公有接口里建立一个子程序 处理wm_hotkey消息
procedure gethotkeymsg(var msg:TMessage);
message wm_hotkey;
这2句都要加
2.调用RegisterHotKey注册热键 UnregisterHotKey撤消热键 因为已在窗口类里申明处理wm_hotkey消息,所以用在窗口类的申明的消息处理子程序处理消息