使用何种API函数可以控制鼠标不动?并不是限定鼠标的范围,而是将鼠标琐死,和释放!

解决方案 »

  1.   

    给各vb地,你自己翻译成delphi的吧:
      Private Declare Function ClipCursor Lib ″user32″ (lpRect As Any) As Long
      Private Type RECT
      Left As Long
      Top As Long
      Right As Long
      Bottom As Long
      End Type //以上代码请从API函数浏览器中复制即可。
      Dim DENG As RECT
      Dim SS As Boolean //是锁定或是释放的判断
      ------------
      Private Sub Form_Load() //作初始化设置。
      SS = True
      Command1.Caption = ″单击将锁定鼠标,锁定后按回车将被释放″。
      Command2.Caption = ″结束程序″
      Form1.Caption = ″锁定鼠标的演示程序″
      End Sub
      -----------
      Private Sub Command1_Click() //锁定鼠标
      If SS = True Then //如果鼠标没有被锁定则锁定它。
      DENG.Left = 0:DENG.Top = 0 //必要设置,四个都为零。
      DENG.Right = 0:DENG.Bottom = 0
      ClipCursor DENG : SS = False //锁定鼠标且重新赋值给SS。
      Else 
      ClipCursor ByVal 0& : SS = True //释放鼠标且重新赋值给SS
      End If
      End Sub
      -----------
      Private Sub Command2_Click()
      End //结束程序。
      End Sub
      单击COMMAND1鼠标将被锁定,锁定后要释放请按下回车键即可。
      

  2.   

    var
      Form1: TForm1;
      myrect: pRECT;
      lock: Boolean;implementation{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
    begin
        lock:= True;
        button1.Caption:= '单击将锁定鼠标,锁定后按回车将被释放';
        Form1.Caption:= '锁定鼠标的演示程序';
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
        If lock= True Then //如果鼠标没有被锁定则锁定它。
        begin
            new(myrect);
            myrect.Left := 0;
            myrect.Top := 0; //必要设置,四个都为零。
            myrect.Right := 0;
            myrect.Bottom:= 0;
            ClipCursor(myrect);
            lock:= False; //锁定鼠标且重新赋值给lock。
        end
        Else
        begin
           ClipCursor(nil);
           lock:= True;
        end;
    end;
      

  3.   

    你可以设置鼠标范围,然后再确定范围就可以啦!限制鼠标的活动范围:
    在Form中放置二个 Button, 然後分别为这两个按钮定义OnClick响应事件如下:
    // 开始
    procedure TForm1.Button1Click(Sender: TObject);
    var
    btButton2: TRect;
    begin
    btButton2 := Button2.BoundsRect;
    MapWindowPoints(handle, 0, btButton2, 2); // 座标换算
    ClipCursor(@btButton2); // 限制鼠标移动区域
    end;// 还原
    procedure TForm1.Button2Click(Sender: TObject);
    var
    btScreen: TRect;
    begin
    btScreen := Rect(0, 0, Screen.Width, Screen.Height);
    ClipCursor(@btScreen);
    end;
      

  4.   

    这句话可以实现:
    Var
       temp:integer;
        SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
    这句话解除:
    Var
       temp:integer;
       SystemParametersInfo(spi_screensaverrunning,0,@temp,0);或者
    function My_CurLock(ileft, itop, iright, idown: integer): Boolean; 
    var
      aRect: TRect;
    begin
      aRect := Rect(ileft, itop, iright, idown);
      Result := ClipCursor(@aRect);
    end;
    先取得当前位置
      VAR P:TPOINT;
       BEGIN
        GETCURSORPOS(P);
        POP1.POPOP(P.X,P.Y);
          END;
                    function My_CurUNLock: Boolean; 
    begin
      Result := ClipCursor(nil);
    end; 
     
      

  5.   

    to : manmanchong
    为什么必须设为0
    ?设成别的确实不行为什么?
    我按下回车或者esc就不锁鼠标了,为什么?