由于要考虑到在大多数程序当中都能通用,所以我采用了钩子。
我参考了网上许多有关键盘钩子的源码,程序中钩子的回调函数为:
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,键盘又不能换,请高手指点迷津,或者还有其它办法吗?万分感谢!

解决方案 »

  1.   

    我用过WH_KEYBOARD_LL,能用的,
    WH_KEYBOARD没试过,gz
      

  2.   

    下面这段代码已经经过测试了,可以用.//使用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); 
      

  3.   

    晕,去买一个二手IBM键盘不是更省事?才20RMB
      

  4.   

    if (HC_ACTION==nCode)
    {
    if (wParam=='a'||wParam=='A')
    {
      return 1;  //我在这用了return 1,可就是为什么屏蔽不了a键???

    }
    }
    去掉上面那句试试
      

  5.   


    原来是去掉  if(HC_ACTION==nCode)这句!谢谢大家啦!