【基础】单击双击三击,三套方案

神奇的AHK,同一个目标,可以用多条路线实行,今天我来讲讲这个热键击打次数的话题哈!

首先出场第一位!利用【Count】计数选手!

~LAlt::
if Count<1
{
  if A_TimeSincePriorHotkey<400                   ;这是一个时间间隔,两次热键点击的时间间隔
  {
    if A_PriorHotkey = %A_ThisHotkey%
    {
      Count++                                      ;次数加1
    }
    else
    {
      Count:=0                                     ;如果检测时间间隔大于400毫秒,那么直接转为0次数
    }
  }
  else
  {
    Count:=0                                       ;第一次测试间隔就大于400毫秒了,直接转为0
  }
}
else
{
  Count:=0
}
if Count>0
{
  Run notepad
  Count:=0
}
return

;~ 分别是A_TimeSincePriorHotkey(上次热键到本次热键被点击的时间间隔,以毫秒计算)、A_PriorHotkey(上次点击的按键)、A_ThisHotkey(当前点击的按键)

;奇怪了,进入代码区域后,就不能再回到文本区域了,那我在这里面介绍第二位选手好了,摩斯函数出场!

摩斯(timeout = 400) { ;
   tout := timeout/1000
   key := RegExReplace(A_ThisHotKey,"[\*\~\$\#\+\!\^]")
   Loop {
      t := A_TickCount
      KeyWait %key%
      Pattern .= A_TickCount-t > timeout
      KeyWait %key%,DT%tout%
      If (ErrorLevel)
         Return Pattern
   }
}

;~ ;使用示例:
;~ !z::
;~    p := 摩斯()
;~    If (p = "0")
;~       MsgBox 单击
;~    Else If (p = "00")
;~       MsgBox 双击
;~    Else If (p = "01")
;~       MsgBox 长按
;~    Else
;~       MsgBox 按键模式 %p%
;~ Return

;接着!!我自己看到【A_TimeIdle】常量,自由发挥了一个双击三击脚本设计!
第三位!!出场!!
;--------------------------------------------------
Home::
Sleep, 500
If(A_TimeIdle>150 And 330>A_TimeIdle)
MsgBox, , 超进化, 这是双击, 1
Else If(A_TimeIdle>400)
MsgBox, , 进化, 这是单击, 1
Else If(A_TimeIdle < 145)
MsgBox, , 究极体, 这是三击, 1
Else
MsgBox, , 啥, 这是啥?%A_TimeIdle%, 1
Return
;--------------------------------------------------------

给TA捐赠
共{{data.count}}人
人已捐赠
其他

自定义定制一个确认框

2021-12-6 13:47:58

其他案例

鼠标键盘录像机(傻瓜版)

2021-12-8 8:37:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索