由于要考虑到在大多数程序当中都能通用,所以我采用了钩子。
我参考了网上许多有关键盘钩子的源码,程序中钩子的回调函数为:
LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(
int nCode,
WPARAM wParam,
LPARAM lParam)
{
// return 1;这里用return 1 就可以把全部常用键屏蔽,可下面我照样用为什么就不行?
if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode))
{
if (wParam==a||wParam==A)
{
return 1; //我在这用了return 1,可就是为什么屏蔽不了a键???
}
}
前面已经用了hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
为什么用了return 1 它还是屏蔽不了啊?我现在急得很,我是移动PC,键盘又不能换,请高手指点迷津,或者还有其它办法吗?万分感谢!
我用过WH_KEYBOARD_LL,能用的,
WH_KEYBOARD没试过,gz
下面这段代码已经经过测试了,可以用.
//使用Hook消息
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if (wParam == 0x41)
return 1;
else
return 0;
}
//设置Hook
SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hInstance,0);
if (HC_ACTION==nCode)
{
if (wParam==a||wParam==A)
{
return 1; //我在这用了return 1,可就是为什么屏蔽不了a键???
}
}
去掉上面那句试试
拆开键盘把那个双层薄膜扯开再装回去就好了,我以前也遇到过。