2017-03-12 142 views
0

所以我让我的脚本AHK阻止输入

toggl:=false 
 
while(1){ 
 
\t if(toggl){ 
 
\t \t Send,E 
 
\t } 
 
\t Sleep, 150 
 
} 
 
!r:: 
 
toggl:=!toggl 
 
return 
 
!y::ExitApp,101

问题是循环运行时,我无法取消它,因为它阻止!Y,所以我不得不重新启动电脑。所以,任何帮助,这将是很好的。

+0

提示:在循环中使用[GetKeyState](https://autohotkey.com/docs/commands/GetKeyState.htm)。 – wOxxOm

+0

你可以给我确切的代码,对不起,我真的很新的AHK – mobinblack

+0

提示是一个提示。您可以使用它来查找现有的答案。 – wOxxOm

回答

0

设置#MaxThreads 2让每个热键运行两次,OR:

使用SetTimer,让热键结束,继续本着“伪线程”你的循环。

toggle := 0 

F12:: 
    toggle := !toggle 
    if (toggle){ 
     SetTimer, DoLoop, -100 
    } 
    return 

DoLoop: 
    Loop { 
     if (!toggle){ 
      break 
     } 
     ; [Do your stuff here] 
    } 
    return 
+0

循环内部似乎是不必要的,与问题 – Blauhirn

+0

'SetTimer,DoLoop,-100'不是一个循环。负值意味着它只运行一次。 它只是启动一个“线程”,它会执行您的实际循环,允许热键完成,因此它可以在循环处于活动状态时再次运行,从而允许您使用启动它的相同热键来终止循环。 –

+0

对不起,你是对的! – Blauhirn