2017-03-12 1 views
0

So mache ich mein SkriptAHK blockiert Eingang

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

Problem ist, dass, während die Schleife läuft, ich kann es nicht absagen, weil es blockiert! Y, also musste ich neu starten Computer. Also jede Hilfe dabei wäre nett.

+0

Hinweis: Verwenden Sie [GetKeyState] (https://autohotkey.com/docs/commands/GetKeyState.htm) innerhalb der Schleife. – wOxxOm

+0

Können Sie mir genauen Code geben, tut mir leid, ich bin wirklich neu zu AHK – mobinblack

+0

Hinweis ist ein Hinweis. Sie können es verwenden, um eine vorhandene Antwort zu finden. – wOxxOm

Antwort

0

Set #MaxThreads 2 jeder Hotkey ermöglichen zweimal zu laufen, OR:

Verwenden SetTimer die Hotkey, damit Ihre Schleife in einem "Pseudo-Thread" beenden und fortzusetzen.

toggle := 0 

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

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

die Schleife innerhalb der Schleife scheint unnötig, verglichen mit der Frage – Blauhirn

+0

'SetTimer, DoLoop, -100' ist keine Schleife. Der negative Wert bedeutet, dass es nur einmal ausgeführt wird. Es startet nur einen "Thread", der Ihre eigentliche Schleife ausführt, so dass der Hotkey fertiggestellt werden kann, so dass er während der Schleife erneut ausgeführt werden kann, sodass Sie die Schleife mit demselben Hotkey beenden können, der sie gestartet hat. –

+0

Entschuldigung, Sie haben Recht! – Blauhirn