-
-
[旧帖] [求助][求助][求助]windows下,键盘按键的处理问题 0.00雪花
-
发表于: 2009-9-11 11:01 936
-
代码如下:
----------------------------------------------
local @szKeyState[256]:byte
...
invoke GetKeyborardState,addr @szKeyState
invoke GetKeyState,VK_SHIFT
mov @szKeyState + VK_SHIFT,al
----------------------------------------------
在程序开始定义一个256字节的缓冲区,用来存放按键所对应的状态信息。但是在处理VK_SHIFT时就存在一个问题,他存在左右键之分,也就是VK_LSHIFT,VK_RSHIFT两种(不知道Ctrl存不存在同样的问题),而在将种虚键转换成AScII码时,要进行查表,在表中只有VK_SHIFT,所以必须要进行转换,因此用GetKeyState直接来获取键盘上的VK_SHIFT状态,用mov @szKeyState + VK_SHIFT,al用修改VK_SHIFT的状态。不知道上面表述是不是正确的,是不是清楚,还请高手指点。不能理解的就是:
1、@szKeyState + VK_SHIFT是什么意思, al里又存放的是什么,有什么意义;
2、定义的缓冲区中的数据到底是什么?为什么要设定为256,按理说应该申请为3个字节就OK了,因为一个字节用来存放是什么键按下,一个字节用来存放控制键状态,还有一个用来存放结束标志0就行了。这样理解有没有问题?
----------------------------------------------
local @szKeyState[256]:byte
...
invoke GetKeyborardState,addr @szKeyState
invoke GetKeyState,VK_SHIFT
mov @szKeyState + VK_SHIFT,al
----------------------------------------------
在程序开始定义一个256字节的缓冲区,用来存放按键所对应的状态信息。但是在处理VK_SHIFT时就存在一个问题,他存在左右键之分,也就是VK_LSHIFT,VK_RSHIFT两种(不知道Ctrl存不存在同样的问题),而在将种虚键转换成AScII码时,要进行查表,在表中只有VK_SHIFT,所以必须要进行转换,因此用GetKeyState直接来获取键盘上的VK_SHIFT状态,用mov @szKeyState + VK_SHIFT,al用修改VK_SHIFT的状态。不知道上面表述是不是正确的,是不是清楚,还请高手指点。不能理解的就是:
1、@szKeyState + VK_SHIFT是什么意思, al里又存放的是什么,有什么意义;
2、定义的缓冲区中的数据到底是什么?为什么要设定为256,按理说应该申请为3个字节就OK了,因为一个字节用来存放是什么键按下,一个字节用来存放控制键状态,还有一个用来存放结束标志0就行了。这样理解有没有问题?
赞赏
他的文章
看原图
赞赏
雪币:
留言: