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

AHK如何在Loop循环中捕获RButton并识别双击事件

AHK循环监听右键双击实现方案

原有代码核心问题

  • 语法错误:表达式中调用变量不需要加%包裹,if (!%A%)的写法会读取A变量值对应名称的变量,逻辑完全失效
  • 无双击判定逻辑:仅检测单次右键按键状态,无法识别连续两次点击的双击动作
  • 无超时限制:循环会无限等待右键输入,不会按需求在15秒后自动结束
  • 触发逻辑不符:原有绑定w键+5秒计时器的逻辑和要求的「点击GUI按钮触发15秒监听」不匹配

完整可运行代码

; 生成GUI界面
Gui +AlwaysOnTop
Gui Add, Button, gStartListen w220 h35, 启动15秒右键双击监听
Gui Show, x200 y200, 右键监听工具
Return

; 点击GUI按钮触发的监听逻辑
StartListen:
    timeoutStamp := A_TickCount + 15000 ; 计算15秒后的时间戳作为超时阈值
    Loop
    {
        ; 到达超时时间直接退出循环
        if (A_TickCount > timeoutStamp)
            break
        
        ; 每100毫秒检测一次右键是否按下,不阻塞超时判定
        KeyWait, RButton, D T0.1
        if (ErrorLevel)
            continue
        
        ; 首次右键按下后,300毫秒内检测是否有第二次按下,符合双击判定标准
        KeyWait, RButton, D T0.3
        if (!ErrorLevel)
        {
            MsgBox, 检测到右键双击
            Send, 这是测试输出文本
            break
        }
        ; 等待右键松开,避免单次长按被误判
        KeyWait, RButton
    }
    MsgBox, 本次监听结束
Return

; 关闭GUI直接退出脚本
GuiClose:
ExitApp

逻辑说明

  • 双击判定间隔设置为300ms,符合Windows系统默认的双击判定阈值,可自行修改第二个KeyWait后的T0.3参数调整
  • 监听过程中不会阻塞脚本其他功能,每100ms会检测一次是否到达超时时间
  • 不需要GUI的话可以直接把StartListen标签下的逻辑绑定到你需要的触发条件上即可

内容的提问来源于stack exchange,提问作者Rimantas Danilevičius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:03:03