请教各位,用delphi如何锁定键盘,只保留一个键可以使用,
按这个键后,解除键盘的锁定。请指教,先谢了。

解决方案 »

  1.   

    unit Unit2;interface
    uses
        Wintypes, WinProcs;//键盘上锁
    function DisableKeyboard: Boolean;
    //键盘解锁
    procedure EnableKeyboard;implementationvar
        oldHook: Hhook;function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt;
    begin
        if code < 0 then
            KbHook := CallNextHookEx(oldHook, code, wparam, lparam)
        else
            KbHook := 1;
    end; // KbHookfunction DisableKeyboard: Boolean;
    //上锁
    begin
        oldHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, Hinstance, 0);
        DisableKeyboard := oldHook <> 0;
    end;procedure EnableKeyboard;
    //解锁
    begin
        if oldHook <> 0 then
        begin
            UnhookWindowshookEx(oldHook);
            oldHook := 0;
        end; // If
    end;
    end.
    unit Unit3;interface
    uses
        Wintypes, WinProcs;function DisableKeyBoard: Boolean;
    procedure EnableKeyBoard;implementation
    var
        oldHook: HHOOK;
    function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt;
    begin
        if code < 0 then
            KbHook := CallNextHookEx(oldHook, code, wparam, lparam)
        else
            KbHook := 1;
    end;function DisableKeyBoard: Boolean;
    begin
        oldHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HINSTANCe, 0);
        Result := oldHook <> 0;
    end;procedure EnableKeyBoard;
    begin
        if oldHook <> 0 then
        begin
            UnhookWindowsHookEx(oldHook);
            oldHook := 0;
        end;end;end.
      

  2.   

    语法:EnableWindow(hWnd: HWND; bEnable: BOOL): BOOL;单元:windows.pas   作用:指定的窗口里允许或禁止所有鼠标及键盘输入   返回值:BOOL,如果返回真,WINDOWS已经禁止,否则返回假   示例:   procedure TForm1.Button1Click(Sender: TObject);   begin   if (IsWindowEnabled(Edit1.Handle)) then   begin   EnableWindow(Edit1.Handle,FALSE);   Button1.Caption:=‘Enable Window';   Edit1.Text:=‘This window is disabled';   end   else   begin   EnableWindow(Edit1.Handle,TRUE);   Button1.Caption:=‘Disable Window';   Edit1.Text:=‘This window is enabled';   end;   end;