我想在编写的程序运行后屏蔽掉键盘的方向键。
请问怎么弄?
(不是在程序内部的屏蔽,是完全屏蔽掉…)

解决方案 »

  1.   

    Low Level Keyboard Hook,Please
      

  2.   

    据说用KEY HOOK能蔽掉键盘的任意键,不知如何实现!
      

  3.   


    type
      KBDLLHOOKSTRUCT = record
        vkCode: DWORD;
        Shift: TShiftState;
        ScanCode: DWORD;
        Flags: DWORD;
        Time: DWORD;
        dwExtraInfo: DWORD;
      end;
      PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
    {Hook}
    var
      KeyHook:HHOOK;
    function keyHookProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM): LRESULT;stdcall;
    var
      y: integer;
      p: PKBDLLHOOKSTRUCT;
    begin
      if nCode<0 then
        Result:= CallNextHookEx(KeyHook,nCode,WParam,LParam)
      else
      begin
        y:=0;
        case WParam of
        WM_KEYDOWN,WM_SYSKEYDOWN:
        begin
          p:=PKBDLLHOOKSTRUCT(Lparam);
          if (p^.vkCode=37)or(p^.vkCode=38)or(p^.vkCode=39)or(p^.vkCode=40)then//這裡可以屏蔽任何鍵
            y:=1;
        end;
        WM_KEYUP,WM_SYSKEYUP:
        begin
          p:=PKBDLLHOOKSTRUCT(Lparam);
          if (p^.vkCode=37)or(p^.vkCode=38)or(p^.vkCode=39)or(p^.vkCode=40)then//這裡可以屏蔽任何鍵
            y:=1;
        end;
        end;
        if y=1 then
          Result:=1
        else
          Result:= CallNextHookEx(KeyHook,nCode,WParam,LParam)
      end;
    end;
    //創建Hook
    if KeyHook=0 then
    begin
       KeyHook:=SetWindowsHookEx(13,@keyHookProc,HInstance,0);
    end;
      

  4.   

    又是这样的问题!
    请LZ直接安装一个CNPack的包,使用TCnKeyBlocker来实现!
    (最好要学习实现)
      

  5.   

    俺也来补充一下:
    1.在VC里可以使用 PreTranslateMessage API屏蔽消息,不知道Delphi有没有此函数,如果有可以使用。
    2.除了楼上的那种全局钩子,是否还可以使用SetWindowLongPtr API来截取 windows默认的消息函数方法来实现,屏蔽消息。