钩子记录键盘的问题

回调函数中判断大小写
是根据caps lock大小写锁定是否开着判断的
但是加上如下代码后 程序直接什么都记录不到了 
注释掉就可以记录到 我在想是不是GetKeyState会与钩子啥的有冲突还是?
之前一个也是因为有GetKeyState什么都记录不到
if (!(GetKeyState(VK_CAPITAL) & 0x8000))//大写灯未打开)
{
if ((wParam>=0X41)&&(wParam<=0x5A))
{
m_Key=_strlwr((LPTSTR)m_Key);//m_Key是根据wParam转换得到的字符
}
}

作者: evi10r   发布时间: 2011-06-15

0x8000判断的是键是否pressed,而不是toggled
你的意思是判断是否toggled,应该if (!(GetKeyState(VK_CAPITAL) & 1))

作者: Lactoferrin   发布时间: 2011-06-15

谢谢楼上的解答
这个确实是我弄错了,但是这个对能不能记录来说不影响吧,事实也是还是记录不了
将这一段代码注释掉就可以记录。。。。

作者: evi10r   发布时间: 2011-06-15

GetKeyState得到的是上次当前线程取得键盘消息时的按键状态
你打印出GetKeyState看一下

作者: Lactoferrin   发布时间: 2011-06-15

引用 3 楼 lactoferrin 的回复:
GetKeyState得到的是上次当前线程取得键盘消息时的按键状态
你打印出GetKeyState看一下

谢谢,试了下 打印出来的是正常的
但是切换状态后 又记录不到了,然后钩子也不能正常卸载了
我用的是wh_keyboard钩子,全局钩子

作者: evi10r   发布时间: 2011-06-15