如何截获Tab键及如何检测Shift等键状态的方法

1.因为Tab属于控件的控制快捷键 所以不能再OnKeyUp及OnKeyDown中截获 ,那么如何截获Tab键?

想截获Tab的方法有以下几种:

(1).再窗口的OnShutCut中可以截获到tab键等控制快捷键, Msg.CharCode即为截获到的按键的键值. 

procedure TFrmHWYDLR_Six.FormShortCut(var Msg: TWMKey;
  var Handled: Boolean);
begin
  inherited;
  if (Msg.CharCode = VK_Tab) and (Self.ActiveControl.Name = 'm_KHDMFHR') then
  begin
    if GetKeyState(VK_SHIFT) < 0 then
      pbTabShift := True;
  end;
end;


(2).利用ApplicationEvents控件拦截消息 

procedure   TForm1.ApplicationEvents1Message(var   Msg:   tagMSG; 
    var   Handled:   Boolean); 
begin 
      if   msg.message=WM_keydown   then 
            showmessage(inttostr(msg.wparam)); 
end; 


(3).利用Hook建立键盘钩子


2.如何判断 检测 Shift Alt Ctrl  等键状态的方法(按下或未按下)?

利用 GetKeyState()函数 .

如果其返回值小于0,即处于按下状态;反之,即处于未按下状态.

if GetKeyState(VK_SHIFT) < 0 then  //如果VK_SHIFT按下



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值