请问各位大侠,能不能控制鼠标的位置?比如让鼠标的X或Y锁定为一个固定的值?用鼠标HOOK行吗?能给个例子吗?谢谢!

解决方案 »

  1.   

    var r: TRect;
    begin
      r := Rect(0, 0, 100, 100);
      ClipCursor(nil);
    end;ClipCursor(nil);  // 恢复
      

  2.   

    上面有点错 :)
    var r: TRect;
    begin
      r := Rect(0, 0, 100, 100);
      ClipCursor(@r);
    end;ClipCursor(nil);  // 恢复
      

  3.   

    可以啊,那就改变Rect嘛:
    var r: TRect;
    begin
      // 锁定X为100
      r := Rect(100, 0, 100, Screen.Height);
      ClipCursor(@r);
      // 锁定Y为100
      r := Rect(0, 100, Screen.Width, 100);
      ClipCursor(@r);
    end;
      

  4.   

    上面的方法给出的是正确的
    你只需要把r的宽度或者高度设置为0即可for example
     r := Rect(400,100,400,400);
     clipcursor(@r);这样你的鼠标只能在(400,100)-(400,400)的线段上运动
      

  5.   

    但这样只对当前窗口有作用呀,如果你切换到别的窗口,鼠标就自由了。“机械鼠标的一个轴卡死”(或者说太脏了)是什么情况我想大家都见过,不论你在WORD,DELPHI或是在挖地雷,都是只能在一个方向动。
    或者这样问:鼠标HOOK截获的WM_MOUSEMOVE消息能修改坐标后再传出去吗?
      

  6.   

    我手上有个MOUSEDEMO是一个大侠给我的,用的就是这个方法,运行后的确只能在一个区域中动,但按ALT+TAB切到别的窗口后就没用了。我的目的主要是修改鼠标的坐标,这个方法看来是没指望了。
      

  7.   

    me D6+2k pro
    没有出现你说的问题
    除非你把程序terminate掉鼠标才会恢复原样
      

  8.   

    to naughtyboy(一切都是为了明天):
    我又试了一下,会的,按Alt+Tab,再点一下鼠标,就能随便移动了。:(