delphi实现全局快捷键的功能

来源:互联网 发布:中国荒漠化 知乎 编辑:程序博客网 时间:2024/05/21 06:24
没什么复杂的,只是最近才用,跟大家分享一下

    全局快捷键就是焦点不在这个系统时也管用的快捷键

    1、首先需要注册快捷键

[delphi] view plain copy
  1. FShowkeyid := GlobalAddAtom('mykey_show');  
  2. //F12  
  3. RegisterHotKey(handle, FShowkeyid, 0 VK_F12);             
  4. //ctrl+F12  
  5. RegisterHotKey(handle, FShowkeyid1, mod_control, VK_F12);     
  6. //alt+F12  
  7. RegisterHotKey(handle, FShowkeyid2, mod_alt, VK_F12);     
  8. //ctrl+alt+f12  
  9. RegisterHotKey(handle, FShowkeyid3, mod_control + mod_alt, VK_F12);    


    2、然后是收到快捷键时进行的处理

    函数声明如下

[delphi] view plain copy
  1. procedure hotykey(var msg:TMessage); message WM_HOTKEY;  
    实现如下
[delphi] view plain copy
  1. procedure TFMain.hotykey(var msg: TMessage);   
  2.     begin  
  3.       if (msg.LParamLo=MOD_CONTROL) and ( msg.LParamHi = VK_F12) then  
  4.         //处理逻辑  
  5.     end;  

  3、最后释放快捷键   

[delphi] view plain copy
  1. UnregisterHotKey( Handle, FShowkeyid );