ahk保持鼠标水平或竖直移动

在画图软件中要进行图片水平拼接,不奢求无缝对接,但希望两者保持水平,用鼠标移动第二张图片很难保持水平移动,用键盘右键又太慢了,于是写了一个保持鼠标水平/竖直移动的脚本。应用场景除了画图软件中水平/竖直移动选中图片外,还可以画水平线/竖直线。

具体思路是:
当鼠标右键按下时,记录当前鼠标位置为起点,弹出提示条显示起点坐标。
当再次右键按下时,计算鼠标移动的横纵距离,如果横向移动更多,则将终点纵坐标与起点纵坐标相等;否则将终点横坐标与起点横坐标相等。然后以起点和终点坐标为参数,用鼠标左键进行拖动,并在终点位置弹出提示条显示终点坐标。

有两个小技巧:
用 #IfWinActive ahk_exe mspaint.exe … #IfWinActive 包围的代码只有在特定窗口mspaint.exe(画图软件)中才会生效,防止在其他软件中误操作或产生干扰。

^q::
ExitApp
return
当按下 Ctrl+Q 时退出程序,因为此时鼠标右键已不可用。同时Ctrl+Q也是SciTE注释的快捷键,所以方便退出程序后直接编辑代码。

lxpos := 0
lypos := 0 ; 上个点的位置
markA := 0 ; 鼠标拖动是否已有起点

#IfWinActive ahk_exe mspaint.exe
RButton::
    MouseGetPos, xpos, ypos
	if (markA = 0) {
		lxpos := xpos
		lypos := ypos
		markA := 1
		ToolTip, 起点 (%lxpos%`, %lypos%), xpos - 140, ypos - 30
		SetTimer, RemoveToolTipOnTop, 1000
	} else {
			xdiff := Abs(xpos - lxpos)
			ydiff := Abs(ypos - lypos)
		if (xdiff <= ydiff) {
			; 沿y轴移动
			xpos:=lxpos
		} else {
			; 沿x轴移动
			ypos:=lypos
		}
		Sleep,200
		MouseClickDrag, Left, lxpos, lypos, xpos, ypos
		markA := 0
		Sleep,200
		ToolTip, 终点 (%xpos%`, %ypos%), xpos + 10, ypos + 10
		SetTimer, RemoveToolTipOnTop, 1000
	}
    return
#IfWinActive

RemoveToolTipOnTop:
	SetTimer, RemoveToolTipOnTop, Off
	ToolTip
	return

^q::
  MsgBox,,,退出,.5
  ExitApp
return

效果:
效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值