我原本使用了ClipCursor()函数来把鼠标锁定在一定的区域内,
可是如果关机时有一个word文档未存盘,OFFICE会提示存盘,并且会将鼠标解锁!
请问如何锁死鼠标? 用SetWindowsHookEx()函数吗?

解决方案 »

  1.   

    这个还不错,可惜是连键盘一起锁,而且系统键没有屏蔽
    function BlockInput(fBlockInput: Boolean): DWORD; stdcall; external 'user32.DLL'; {block input/ blockieren} procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      BlockInput(True); 
    end; {Unblock input / Blockierung aufheben} procedure TForm1.Button2Click(Sender: TObject); 
    begin 
      BlockInput(False); 
    end; 
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    Var
      rtButton2: TRect;
    Temp:integer;
    begin
      rtButton2 := Button2.BoundsRect;
      MapWindowPoints(handle, 0, rtButton2, 2); // 座标换算
      ClipCursor(@rtButton2); // 限制滑鼠移动区域
    SystemParametersInfo(spi_screensaverrunning,1,@temp,0);end;锁键盘:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Asm    //封锁20端口
        IN AL,21H
        OR AL,02H
        OUT 21H,AL
      end;
    end;解锁键盘:
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Asm     //解锁20端口
        IN AL,21H
        AND AL,0FDH
        OUT 21H,AL
      end;
    end;