;  用定时器代替循环的例子  By FeiYue

F1:: Reload  ;-- 重启

F2:: Suspend  ;-- 挂起热键

$1::  ;-- 这些是原来的热键,按下执行,松开停止
$2::
$3::

$1 Up::  ;-- 增加对应的弹起热键,用于弹起时停止定时器
$2 Up::
$3 Up::

;-- 不让一个热键在没有执行完时被其他热键中断
Critical

;-- 得到最终用于发送的按键
k:=StrReplace(Trim(A_ThisHotkey, "$"), " Up")

;-- 初始化 状态数组 和 定时器数组
if (!IsObject(keydown))
  keydown:=[], timer:=[]

;-- 初始化定时器数组中按键对应的绑定函数
if (!timer[k])
  keydown[k]:=0, timer[k]:=Func("aaa").Bind(k)

;-- 根据按键状态有变化才执行
if InStr(A_ThisHotkey, "Up") {
  if (keydown[k]=1) {
    ;-- 停止定时器
    keydown[k]:=0, r:=timer[k]
    SetTimer, % r, Off
  }
} else {
  if (keydown[k]=0) {
    ;-- 启动定时器
    keydown[k]:=1, r:=timer[k]
    SetTimer, % r, 1
  }
}
return

aaa(k) {
  Send % k
  Sleep, 30
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。