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

评论(0)