You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AHK中KeyWait+MouseGetPos随机失效或无法正常工作问题排查

解决AutoHotkey记录三次点击坐标的异常问题

问题原因

原脚本的核心问题在于未处理鼠标按键的状态残留,以及依赖KeyWait, LButton, D的触发逻辑:

  • 双击启动脚本时,双击操作的第二次左键按下会被第一个KeyWait捕获;由于双击间隔极短,第二个KeyWait检测到左键仍处于按下状态,会立即触发;第三个KeyWait因3秒超时未检测到新的按下,直接跳过,导致未完成三次点击就弹出提示。
  • 单次点击完成配置的情况,是因为前一次点击后左键未完全弹起,后续的KeyWait直接检测到按下状态触发,加上可能的超时,导致三次“点击”实际只执行了一次物理点击。
  • 重复坐标是因为KeyWait触发时鼠标未移动,直接获取了当前位置(比如按键状态残留导致连续触发MouseGetPos)。

修复方案

修改脚本,确保每次捕获的是完整的单次点击(按下+弹起),并且在每次等待新点击前,强制确认鼠标左键处于弹起状态:

CoordMode, Mouse, Screen

; 提示用户开始点击
MsgBox, 请依次点击3个目标位置,每次点击后松开左键

; 第一次点击:先确保左键弹起,再等待按下,然后等待弹起
KeyWait, LButton, U  ; 等待左键弹起(避免初始状态残留)
KeyWait, LButton, D  ; 等待左键按下
MouseGetPos, OutputVarX1, OutputVarY1
KeyWait, LButton, U  ; 等待左键弹起,确保是一次完整点击

; 第二次点击
KeyWait, LButton, U
KeyWait, LButton, D
MouseGetPos, OutputVarX2, OutputVarY2
KeyWait, LButton, U

; 第三次点击
KeyWait, LButton, U
KeyWait, LButton, D
MouseGetPos, OutputVarX3, OutputVarY3
KeyWait, LButton, U

; 写入INI文件
IniWrite, %OutputVarX1% %OutputVarY1%, connections.ini, PLACEHOLDER_NAME, click1
IniWrite, %OutputVarX2% %OutputVarY2%, connections.ini, PLACEHOLDER_NAME, click2
IniWrite, %OutputVarX3% %OutputVarY3%, connections.ini, PLACEHOLDER_NAME, click3

MsgBox, 配置完成!已记录3个点击坐标至connections.ini

关键改进点

  • 每次点击前添加KeyWait, LButton, U:确保鼠标左键处于弹起状态,避免之前的按键状态残留导致KeyWait, LButton, D直接触发。
  • 每次按下后添加KeyWait, LButton, U:确保捕获的是完整的一次点击,避免用户按住左键时脚本误判为多次点击。
  • 移除了T3超时参数:避免因超时导致未完成点击就继续执行,若需要超时逻辑,可添加提示后再设置,比如KeyWait, LButton, D T10(10秒超时),并增加超时判断。

内容的提问来源于stack exchange,提问作者michalb93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 14:28:08