Delphi全局熱鍵的註冊
阿新 • • 發佈:2019-03-09
ebo delet add lose 全局熱鍵 pan div 一個 ssa
1.在窗啟動時創建ATOM;(aatom:ATOM;定義在private中)
1 if FindAtom(‘ZWXhotKey‘)=0 then 2 begin 3 aatom:=GlobalAddAtom(‘ZWXhotKey‘); 4 end; 5 if RegisterHotKey(Handle,aatom,MOD_ALT,$41) then 6 begin 7 MessageBox(Handle,‘按alt+a‘,‘提示‘,MB_OK); 8 end;
2.定義處理熱鍵的消息過程(定義在private中,下面二個處理消息的過程是一樣的)
1 procedure hotkey(var msg:TMessage);message WM_HOTKEY;//定義全局熱鍵消息事件 2 //procedure hotkey2(var msg:TWMHotKey);message WM_HOTKEY;//同上
3.消息過程的處理(下面二個IF任選一個即可,如果msg在步驟2定義成TWMHotKey,則不用轉換)
1 procedure TForm2.hotkey(var msg: TMessage); 2 begin 3 if TWMHotKey(msg).HotKey=aatom then 4 begin5 //ShowMessage(‘s‘); 6 end; 7 if (msg.LParamHi=$41) and (msg.LParamLo=MOD_ALT) then 8 begin //處理事情 13 end; 14 end;
4.程序關閉時,刪除熱鍵和原子
1 procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); 2 begin 3 UnregisterHotKey(Handle,aatom); 4 GlobalDeleteAtom(aatom);5 end;
Delphi全局熱鍵的註冊