注册热键

BOOL   RegisterHotKey(  
  HWND   hWnd,         //响应该热键的窗口句柄  
  Int   id,                       //该热键的唯一标识  
  UINT   fsModifiers,   //该热键的辅助按键  
  UINT   vk                 //该热键的键值  
  );    
   
  为了得到唯一标识,我们还将用到另一个API函数    
   
  ATOM   GlobalAddAtom(  
   
  LPCTSTR   lpString   //自己设定的一个字符串  
   
  );  
   
  因为我们还要在程序退出的时候,消除这个热键,   所以需要声明一个全局变量:    
   
  HotKeyId:   Integer;    
   
       
   
  第一步:    
   
  在窗口的create事件中,加入以下代码    
   
  HotKeyId   :=   GlobalAddAtom(‘MyHotKey’)   -   $C000;  
  注:   HotKeyId的合法取之范围是0x0000到0xBFFF之间,   GlobalAddAtom函数得到的值  
  在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。  
   
  第二步:    
   
  在上面的代码下面加入:    
   
  RegisterHotKey(Handle,   hotkeyid,   MOD_ALT,   VK_F8);      
   
  热键的辅助按键包括Mod_Ctrl   、Mod_Alt、Mod_Shift,对于Windows兼容键盘还支持Windows  
  键,即其键面上有Windows标志的那个键,其值为Mod_win。  
   
  上面   的代码注册了一个热键:ALT+F8。当然如果你希望象TAKEIT那样,只用F8,   就这么写:  
   
  RegisterHotKey(Handle,   hotkeyid,   0,   VK_F8);      
   
  注:handle是一个特殊的变量,它表示当前窗口的句柄。  
   
  这个函数你应该能句举一反三了吧。  
   
  原理:  
   
  一旦热键设置成功,在程序应用过程中如果有相应的键被按下,Windows系统都会给你的应  
  用程序发送一个消息WM_HOTKEY,不管你的应用程序是否为当前活动的。其中WM_HOTKEY消  
  息的格式为:      
   
  idHotKey   =   (int)   wParam;   //   该参数在设置系统级的热键有用,一般不予使用  
  fuModifiers   =   (UINT)   LOWORD(lParam);     //热键的辅助按键  
  uVirtKey   =   (UINT)   HIWORD(lParam);   //热键的键值    
   
       
   
  第三步:    
   
  注册了热键,就该写下响应代码了。    
   
  首先,在程序头部分的private段中加入声明   (作用是声明这个过程,和声明变量类似。  
  关于如何声明函数、过程,请请参考各自的帮助文件或其它资料):    
   
  procedure   HotKeyDown(var   Msg:   Tmessage);   message   WM_HOTKEY;    
   
       
   
  然后在程序中加入如下代码:    
   
  procedure   Tfmain.HotKeyDown(var   Msg:   Tmessage);    
   
  begin    
   
  if   (Msg.LparamLo   =   MOD_ALT)   AND   Msg.LParamHi   =   VK_F8   then   //   假设热键为ALT+F8    
   
  begin    
   
  end;    
   
  最后一步:    
   
  在窗口的close事件中加入    
   
  UnRegisterHotKey(handle,   HotKeyId);   //注销HotKey,   释放资源 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值