2013-10-06 47 views
0

脚本的目标:每次按热键时连续按Numpad0 10秒。用于定时自动装载功能的AHK脚本

当前代码:

toggle = 0 
#MaxThreadsPerHotkey 2 

timerToggle: 
Toggle := !Toggle 
sleep 10000 
Toggle := !Toggle 

F12:: 
     SetTimer, timerToggle, -1 
    While Toggle{ 
     send {NumPad0} 
     sleep 100 
    } 
return 

目前,如预期,但只有一次将运行该脚本。试图在第一次后再次运行它什么也不做。我错过了什么?

回答

0

您的脚本可能不会正确切换您的变量。这里是你正在尝试做的,它使用A_TickCount一个更清洁的版本:

F12::SetTimer, HoldNumPad, -1 

HoldNumPad: 
    kDown := A_TickCount 
    While ((A_TickCount - kDown) < 10000) 
    { 
     Send {Numpad0} 
     Sleep 100 
    } 
Return 

注意,按F12,而标签运行不会有任何影响。

编辑:使SetTimer使用-1期限只运行一次,这要归功于MCL。

+0

虽然技术上等同,我觉得更清洁叫'SetTimer的,HoldNumPad,-1'而不是后来停用了。它为您节省了一行代码,关于热键,它更具可读性。 – MCL

+0

我其实并不熟悉负面时期!预先快速搜索文档不会产生'-1'。看起来它被列为“仅运行一次”。我会编辑并做笔记。 –

+0

是的,它有点隐藏。再次思考它,让我意识到,使用'-1'时,它也会瞬间运行,而不是默认的250毫秒超时,当您不指定参数时... – MCL

1

我宁愿用SetTimers而不是10秒。长while像这样

F12:: 
Send {Numpad0} 
SetTimer, start, 100 
SetTimer, stop, -10000 
return 

start: 
Send {Numpad0} 
return 

stop: 
SetTimer, start, off 
return