百度了一下,有两种方法:
一:
procedure TForm1.Button1Click(Sender: TObject);
var
Rect:TRect ;
begin
rect.Left:=224 ;
rect.Top:=185 ;
rect.Bottom:=500 ;
rect.Right:=719;
windows.ClipCursor(@rect);
end;二、
procedure TForm1.Button1Click(Sender: TObject); 
var 
btButton2: TRect; 
begin 
btButton2 := Button2.BoundsRect; 
MapWindowPoints(handle, 0, btButton2, 2); // 座标换算 
ClipCursor(@btButton2); // 限制鼠标移动区域 
end; 但是 以上两种方法有个弊端。一旦这个程序失去焦点,那么 鼠标移动范围就失去控制了(又可以移动到范围外地方了),请教更好的方法。

解决方案 »

  1.   

    下个鼠标钩子试试
    SetWindowsHookEx(WH_MOUSE,MouseProc,hins,0);//也可以试试WH_MOUSE_LL
    LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
        //在这里面处理鼠标消息
    }
    具体的你看看MSDN就可以了
      

  2.   

    // 控制在一个button内
    var
      rbtn3: TRect;
    begin
      rbtn3 := Button3.BoundsRect;
      MapWindowPoints(Handle, 0, rbtn3, 2);
      ClipCursor(@rbtn3);// 还原到整个screen
    var
      rScreen: TRect;
    begin
      rScreen := Rect(0, 0, Screen.Width, Screen.Height);
      ClipCursor(@rScreen);