所以我刚刚开始使用autohotkey并且我使用这个脚本在一个名为“流亡之路”的游戏中垃圾邮件进行交易聊天,它运行得很好,但是当我再次按f1时我不能让它停止,我已经尝试过了时间,但循环不会停止
#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 :(得分:3)
我认为你最好使用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()执行此操作,但之后您无法使用相同的键来打开和关闭它,因为它会在您启动时立即关闭,除非您添加{{1在那里的命令,在这种情况下,它变得不可靠。
但是,您可以使用单独的键来停止循环,如图所示。
Sleep
但正如我上面所述,toggle := 0
i := 0
F1::
toggle := !toggle
if (toggle) {
Loop {
if (GetKeyState("F2", "P")) {
toggle := !toggle
break
}
TrayTip, Counter, %i%
i++
}
}
return
以更加稳定的方式实现了相同的结果。所以我会选择那个。
答案 1 :(得分:1)
这是我能够做到的最简单的方法。
使用键" 2"开始/停止切换,发送" a"延迟0.1秒。
#MaxThreadsPerHotkey 2
running := false
stop := false
~2::
if(!running) {
running := true
}
else {
stop := true
return
}
loop {
Send {a} ; example sending key "a"
if(stop) {
running := false
stop := false
break
}
Sleep, 100
}
return
答案 2 :(得分: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
答案 3 :(得分: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
此外,始终使用来自http://ahkscript.org/的AutoHotkey及其文档(当前最新版本,新官方网站)! Autohotkey.com上的AutoHotkey及其文档已过时,使用它们可能会遇到一些问题!
答案 4 :(得分:0)
我的策略是这样的, 使用此命令:
v::
loop
{
click
if (GetKeyState("b")) {
break
}
}
return
(简单的AutoClicker)
答案 5 :(得分:0)
使用循环命令的工作示例。然而这么简单。
#Persistent
#MaxThreadsPerHotkey 2
toggle := False
f1 UP::
toggle := !toggle
Loop {
If (!toggle) {
break
}
; Spam commands here
}
Return