GetClipCursor
保存当前设置

ClipCursor
设置新区域,这区域可以成为一个点(你的目的)最后是党的时候
ClipCursor恢复原来的数值

解决方案 »

  1.   

    如果是这样的话
    MOUSE是可以动的啊
      

  2.   

    var
      arect:Trect;
    begin
      arect.Left:=255;
      arect.Top:=255;
      arect.Right:=255;
      arect.Bottom:=255;
      clipcursor(@arect);不过,还是会有一点儿颤动!只能做到这里了!
      

  3.   

    在WIN2K下不幸啊
    我设置在0,800那里
    但是
    当DBCLICK就失效了
    WHY
      

  4.   

    不会失效呀! 你是说的dblclick吗? 我试了, 没有呀!
      

  5.   

    我知道是为什么了。 因为你的窗口没有800那么高呀。 clipcursor是不能将鼠标锁定在窗口范围之外的。
      

  6.   

    gototop99(巴蒂) 、{用消息处理不就行了吗,把鼠标消息屏蔽掉。 }
    具体怎么做了
      

  7.   

    用简单的消息做不到,只能用hook
      

  8.   

    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      setCursorPos(left + 100, top + 100);
    end;但非常快地移动鼠标,可将鼠标移到窗体外;另外,我也试了用拦截消息的办法,代码如下,但总是拦截不到,大家知道怎么回事吗?var
      Form1: TForm1;
      OldWndProc: TFNWndProc;implementation{$R *.DFM}function NewWndProc(window: hwnd; amessage: integer; wparam, lparam: longint): longint; stdcall; export;
    begin
      result := 0;
      if amessage <> WM_MOUSEMOVE then
         result := CallWindowProc(OldWndProc, window, amessage, wParam, lParam)
      else
         form1.Caption := 'Mouse Move';
    end;initialization
      OldWndProc := TFNWndProc(SetWindowLong(Application.Handle, GWL_WNDPROC, Longint(@NewWndProc)));
      Setwindowlong(Application.handle, GWL_WNDPROC, Longint(@NewWndProc));finalization
      if OldWndProc <> nil then
         SetWindowLong(Application.Handle, GWL_WNDPROC, Longint(OldWndProc));
    end.