2014-10-07 155 views
1

因此,我刚开始使用autohotkey,并且使这个脚本在称为流放路径的游戏中发出了垃圾邮件交易聊天,它工作得很好,但我不能得到它停止时,我按F1再次,我已经试过countles倍,但环是不会停止如何使用您启动它的钥匙停止autohotkey中的死循环

#MaxThreads 2 
wintitle=Path of Exile 
SetTitleMatchMode,2 
DetectHiddenWindows,On 
setkeydelay,2500,0 
f1:: 
toggle:=!toggle 
Loop 
{ 
    if toggle 
    controlsend,,{enter}{up}{enter}, %wintitle% 
    else 
    break 
} 
return 

回答

0

使用MaxThreadsPerHotkey

#MaxThreadsPerHotkey 2 
wintitle=Path of Exile 
SetTitleMatchMode,2 
DetectHiddenWindows,On 
setkeydelay,2500,0 
return 

f1:: 
toggle:=!toggle 
Loop 
{ 
if toggle 
controlsend,,{enter}{up}{enter}, %wintitle% 
else 
break 
} 
return 
+0

感谢您的答复,我试过,但它仍然没有工作 - 循环不停地再次按F1 – 2014-10-07 04:07:57

2

我认为你最好使用SetTimer为了这。当涉及到切换时,循环不太容易处理。

i := 0 
toggle := 0 
F1:: 
    toggle := !toggle 
    if (toggle) { 
     SetTimer, Timer_Spam, 10 
    } else { 
     SetTImer, Timer_Spam, Off 
    } 
return 

Timer_Spam: 
    TrayTip, Counter, %i% 
    i++ 
return 

之所以你的循环是不工作的,因为一旦你进入循环程序被卡在那里,所以要得到你所需要从循环内工作。

你可以用GetKeyState()来做到这一点,但是你不能使用同一个键来打开和关闭它,因为它一开始就会关闭,除非你在那里添加Sleep命令,这种情况反而变得不可靠。

但是,您可以使用单独的键来停止循环,如下所示。

toggle := 0 
i := 0 
F1:: 
    toggle := !toggle 
    if (toggle) { 
     Loop { 
      if (GetKeyState("F2", "P")) { 
       toggle := !toggle 
       break 
      } 

      TrayTip, Counter, %i% 
      i++ 
     } 
    } 
return 

但正如我上面所说的,SetTimer以更稳定的方式达到了相同的结果。所以我愿意这样做。

+0

感谢您的帮助的人去后,我真的很感激它,你的第二个代码工作,我所有必须做的是持有f2 – 2014-10-08 01:17:33

0

此代码你想要做什么:

#MaxThreads 2 
wintitle=Path of Exile 
SetTitleMatchMode,2 
DetectHiddenWindows,On 
setkeydelay,2500,0 

return 
F1:: 
    Loop 
    { 

     CheckLButton1: 
     if (GetKeyState("F1")) 
     { 
      Goto, CheckLButton1 
     } 

     Docode: 
     controlsend,,{enter}{up}{enter}, %wintitle% 
     ;ToolTip, 1 


     if (!(GetKeyState("F1"))) 
     { 
      Goto, Docode 
     } 

     CheckLButton2: 
     if (!(GetKeyState("F1"))) 
     { 
      return 
     } 
     else 
     { 
      Goto, CheckLButton2 
     } 
    } 
return 

如果需要解释,看看在这里我的帖子:http://ahkscript.org/boards/viewtopic.php?f=5&t=4613#p26298

此外,经常使用的AutoHotkey和http://ahkscript.org/其documenatation(当前UPTODATE版本,新的官方网站)! autohotkey.com及其来自autohotkey.com的文档已过时,您可能在使用它们时遇到一些问题!

0

我的策略是这样的, 使用这个命令:

v:: 
loop 
{ 
click 
if (GetKeyState("b")) { 
break 
    } 
} 
return 

(其简单AutoClicker)

0

与循环命令工作示例。然而这么简单。

#Persistent 
#MaxThreadsPerHotkey 2 
toggle := False 

f1 UP:: 
toggle := !toggle 

Loop { 
    If (!toggle) { 
     break 
    } 
    ; Spam commands here 
} 
Return