我在程序启动时屏蔽鼠标和键盘,一段时间后,键盘自己解开,鼠标不可用。
鼠标我用的隐藏,基本上算可以,能限制最好,可是键盘就不行了,要求所有键都不好使,组合也不行,谁能做到,救命啊!
以下为今天晚上搜索的:
Asm    //封锁20端口
    IN AL,21H
    OR AL,02H
    OUT 21H,AL
  end;
执行时报错
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @temp, 0);
不好使
有好使的吗!5555555
分不够就要!

解决方案 »

  1.   

    要屏蔽所有键盘输入,没你说这么麻烦的,使用键盘钩子就可以了
    一下是dll的代码library KeyBoard;uses
      SysUtils,
      Windows,
      ShellApi,
      Messages,
      WinProcs,
      Classes;var
      KBHook:HHook;  function KeyBoardProc(Code:integer;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall;
      begin
        result:=0;
        if Code<0 then
        begin
          CallNextHookEx(KBHook,Code,wParam,lParam);
        end;    result:=1;  end;  function StartHook:boolean;stdcall;
      begin
        KBHook:=SetWindowsHookEx(WH_KEYBOARD,@KeyBoardProc,hInstance,0);
      end;  function RemoveHook:boolean;stdcall;
      begin
        UnHookWindowsHookEx(KBHook);
      end;exports
      StartHook,RemoveHook;{$R *.res}begin
    end.————————————————————————————————————————————————————
    一下是执行程序的代码
    unit SetHook;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}function StartHook:boolean;external 'KeyBoard.dll';
    function RemoveHook:boolean;external 'KeyBoard.dll';procedure TForm1.FormCreate(Sender: TObject);
    begin
      StartHook;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      RemoveHook;
    end;end.执行这个应用程序,你再使用键盘试试看?记得给分
      

  2.   

    那个特殊的建必需使用插入winlogon.exe的方法;
      

  3.   

    自定义一个键盘点击的消息收到按健消息后不返回至于Ctrl-ALT-DEL组合键
    也一样的没办法,呵呵