我有一个AutoHotkey脚本,其中鼠标左键被映射到一个函数。该功能的一部分包括模拟实际光标位置的左键单击偏移。毫不奇怪,这最终会成为一个无限循环。
同样地,有一个处理程序可以在按下按键之前捕获按键并执行一些数学运算。
有没有办法在不触发点击处理程序的情况下执行点击?同样,有没有办法发送按键而不触发按键处理程序?
Trap() {
MouseGetPos, x,y
;Perform some math with x and y
Click %x% %y% left ;oops, this causes Trap to get called again
}
LButton:: Trap
答案 0 :(得分:3)
从AutoHotkey手册:
$ - 这通常仅在脚本使用“发送”命令发送组成热键本身的键时才需要,否则可能会导致其自行触发。
这就是诀窍:
$LButton:: Trap
答案 1 :(得分:0)
我实际上看不到你描述的循环行为,所以我想知道是否还有其他因素在起作用。
如果确实存在问题,那么可以使用布尔标志来防止递归执行:
isTrapping := false
Trap() {
global isTrapping
if isTrapping = true
return
isTrapping := true
MouseGetPos x, y
; do some maths with x & y
Click %x%, %y%
isTrapping := false
}
LButton::Trap()