我真的需要你的帮助。我试图编写一个 AutoHotkey 脚本,但我还没有找到可行的解决方案。
我当前的 AutoHotkey 脚本是:
#IfWinActive Guild Wars 2
shift & 1::
Send, 1
sleep 500
Send, y
return
因此,当我在公会战争中按住并Shift按下时1,它将执行我的宏。因此,我可以发送垃圾邮件1(同时按住Shift),它会一次又一次地执行。问题是,我总是需要按住Shift。我的愿望是,当我按下Shift一次时,它会在我发送垃圾邮件时始终执行宏1。但它应该只在我按下另一个键(Ctrl,, )之前执行宏。因此F1,,F2如果我按下另一个键,它应该正常执行1(因此没有宏)。
- 按下Shift一次并发送垃圾邮件1=我的宏
- Ctrl按下诸如、之类的键后F1,,F2它应该执行正常操作1(无宏)。
答案1
这将达到目的:
#ifWinActive Guild Wars 2
shift:: ; Shift to toggle auto-spammer
hotkey, ifWinActive, Guild Wars 2
hotkey, $1, shift_1, on
loop {
input, keystroke, l1 v, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}
if keystroke not contains 1
break
}
hotkey, $1, off
return
shift_1:
send 1
sleep 500
send y
return
或者,如果您想要Shift切换修改X
热键1- 9:
#ifWinActive Guild Wars 2
X = 9 ; Set this to the number of keys you want to be auto-spammable
loop %X% { ; Create hotkeys 0-X
hotkey, ifWinActive, Guild Wars 2
hotkey, $%a_index%, autoSpammer
}
shift:: ; Shift to toggle auto-spammer
autoSpam = on
loop {
input, keystroke, l1 v, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}
if regExMatch(keystroke, "[^0-9]")
break
}
autoSpam = off
return
autoSpammer:
thisHotkey := regExReplace(a_thisHotkey, "[^0-9]")
if autoSpam = on
{
sendInput %thisHotkey%
sleep 500
sendInput y
}
else
send %thisHotkey%
return