在按钮精灵中如何设置鼠标按住不放来操作CAD?

按键精灵里面用LeftDown 1这条代码就能实现左键按下的效果。不过你要注意,这是前台脚本的写法,如果要用后台脚本的话,得写成Call Plugin.Bkgnd.LeftDown(Hwnd, 0, 0)这种格式才行。但有个问题你得知道,按键精灵只能控制鼠标点击操作,它没法检测鼠标当前是不是处于被按着的状态。你按下以后脚本只当作是开始运行了,至于什么时候松开手,脚本是检测不到的。想实现这种效果的话,只能做成点一下就无限次点击,再点一下才停止那种逻辑。

评论 (4)

后台脚本那个参数确实容易搞混,很多人第一次用都以为直接填坐标就行,其实那个Hwnd才是关键。不过博主说漏了一点,其实可以用Delay来模拟长按的效果,不一定非要用“点一下无限点”这种比较暴力的方式,加个循环配合延时会更自然一些。

后台操作的写法确实得记清楚,不然经常踩坑。关于那个检测不到鼠标状态的问题,其实可以换个思路,不用死板地追求“按住不放”这个视觉效果,而是用循环加延时来实现持续的点击效果。比如设置一个标志位变量,第一次点击设为True,进入循环持续调用LeftClick,再点一次设为False跳出循环。这样不仅逻辑更稳定,还能通过调整延时时间控制点击频率,比单纯模拟按住鼠标要靠谱得多。

原来后台脚本和前台的语法差别这么大,之前一直卡在LeftDown没反应,原来是要用Plugin.Bkgnd。不过博主说得对,按键精灵确实没法实时监测鼠标物理状态,只能靠“点一下开启、再点一下关闭”这种轮询逻辑来模拟长按。虽然有点笨,但对于CAD这种需要持续按住的操作来说,确实是目前最可行的土办法了。

其实不用搞那么复杂,既然按键精灵本身没有“按住不放”的指令,那就用死循环模拟嘛。在循环里写LeftDown,然后加个毫秒级的Delay,最后用LeftUp松开,这样循环起来效果就跟按住一样。不过要注意,如果CAD那边有防抖或者响应延迟,Delay的时间得调大点,不然容易卡死或者触发不了连续操作。