开发者社区> 问答> 正文

怎样限制鼠标只能水平或垂直移动报错

因为个人需求需要按住LShift时,只允许鼠标水平或垂直移动(即使物理上不是),
目前只能想到获得鼠标当前坐标,更改其x/y值,但光标会晃动。
请问有什么方法实现吗?
或者思路也可以
顺便一提,我用的是AutoHotKey,一个脚本语言。当然如果有代码的话,即使语法不同,我也会学学思路的...

展开
收起
kun坤 2020-06-03 13:09:38 609 0
1 条回答
写回答
取消 提交回答
  • SetBatchLines, -1
    CoordMode, Mouse, Screen
    ~LButton::
    MouseGetPos, , OutputVarY
    While GetKeyState( "LButton" )
      ClipCursor( 1, 0, OutputVarY, A_ScreenWidth, OutputVarY )
    ClipCursor( 0 )
    Return
    
    ClipCursor( Confine=True, x1=0 , y1=0, x2=1, y2=1 ) {
      VarSetCapacity( R, 16, 0 )
      NumPut( x1, &R+0 ), NumPut( y1, &R+4 )
      NumPut( x2, &R+8 ), NumPut( y2, &R+12 )
      Return Confine ? DllCall( "ClipCursor", UInt, &R ) : DllCall( "ClipCursor" )
    }
    return

    以上是在国外论坛找到的AutoHotKey脚本
    虽然好使...但看不太懂 ######win32 api mouse_event?

    ######hook?######用鼠标的响应时间来设每一次的位置会自然些吧

    2020-06-03 14:45:03
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载