志华 发表于 2014-3-30 15:34:26

关于win32的键盘钩子??

_HookProcBack proc _dwCode, _wParam, _lParam
                LOCAL @szKeyState:byte
               
                invoke CallNextHookEx, hHook, _dwCode, _wParam, _lParam
                invoke GetKeyboardState, addr @szKeyState
                invoke GetKeyState, VK_SHIFT       
                mov @szKeyState + VK_SHIFT, al
                mov ecx, _lParam
                shr ecx, 16
                invoke ToAscii, _wParam, ecx, addr @szKeyState, offset szAscii, 0
                mov byte ptr szAscii, 0
                invoke SendMessage, hWnd, dwMessage, dword ptr szAscii, 0
               
                xor eax, eax
                ret
               
_HookProcBack endp

谁能帮我解释下处理VK_SHIFT到底是什么意思,既然上面的@szKeyState已经有了所有按键的状态为什么还要单独处理?
VK_SHIFT 跟VK_LSHIFT,VK_RSHIFT怎么个关系,只要一个为1,VK_SHIFT就为1??

志华 发表于 2014-3-30 16:58:42

我顶起。。。

powerpro 发表于 2014-4-1 08:46:34

支持楼主,大家都来支持啊

最好是明天 发表于 2014-4-1 10:15:50

顶起。。。。。。。。。

志华 发表于 2014-4-1 13:08:31

@小甲鱼...

猫咪喵喵 发表于 2014-4-1 13:55:26

本帖最后由 猫咪喵喵 于 2014-4-1 13:56 编辑

L跟R是左右两个Shift键分别是否按下
VK_SHIFT是Shift键是否按下

Shift Alt Ctrl这类的属于特殊按键 需要单独处理
主要原因是组合键的需要如Ctrl+Shift这种

具体可参考微软MSDN的文档


lys623 发表于 2014-4-1 23:46:14

志华 发表于 2014-4-4 23:59:53

猫咪喵喵 发表于 2014-4-1 13:55 static/image/common/back.gif
L跟R是左右两个Shift键分别是否按下
VK_SHIFT是Shift键是否按下



我意思是既然上面的@szKeyState里面已经有了所有按键的信息。他又拿了一次VK_SHIFT,然后把值给了@szKeyState。难道GetKeyboardState里面没有包含VK_SHIFT的值?

猫咪喵喵 发表于 2014-4-5 02:29:50

志华 发表于 2014-4-4 23:59 static/image/common/back.gif
我意思是既然上面的@szKeyState里面已经有了所有按键的信息。他又拿了一次VK_SHIFT,然后把值给了@szKeyS ...

楼主有在这问的空 看MSDN文档都能解决20遍你的问题了

啃啃 发表于 2014-4-5 09:34:37

vk_shift属于系统击键

qidaoshen 发表于 2014-4-5 14:06:03

顶一下!!!

志华 发表于 2014-4-5 18:40:34

猫咪喵喵 发表于 2014-4-5 02:29 static/image/common/back.gif
楼主有在这问的空 看MSDN文档都能解决20遍你的问题了

找不到。不要那两句还是可以实现大小写的。你都回了那不如给我说说呗
页: [1]
查看完整版本: 关于win32的键盘钩子??