Repetição de comandos (macro)

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

Anonimo
Posts: 2
Joined: 28 Dec 2020, 13:36

Repetição de comandos (macro)

Post by Anonimo » 28 Dec 2020, 14:20

Por favor, me ajudem a criar um loop, ou me enviem um modelo para toda vez que eu pressionar a tecla ''S'', seja registrado duas vezes essa mesma tecla.
garry
Posts: 2630
Joined: 22 Dec 2013, 12:50

Re: Repetição de comandos (macro)

Post by garry » 06 Jan 2021, 16:19

example send a s d w 3-times

Code: Select all

;- repetir la misma letra 3 veces 
;- https://www.autohotkey.com/boards/viewtopic.php?f=40&t=84778

;- send a s d w 3-times
;- ESC end script 
#Warn
#Persistent
#InstallKeybdHook
altkey:=""
SetTimer,aa, 10
return
;------------
aa:
if(A_TimeIdlePhysical < 100)
{
e:=""
IF (A_PriorKey = AltKey)
	Return
if (a_priorkey="a" or a_priorkey="s"  or a_priorkey="d"  or a_priorkey="w")
{
loop,3
  e .=a_priorkey
msgbox, 262144,TEST ,%e% , 1   ;- msgbox for TEST / maybe use SEND command
}
AltKey := A_PriorKey
}
return
esc::exitapp
;========================================
User avatar
Gio
Posts: 1120
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Repetição de comandos (macro)

Post by Gio » 07 Jan 2021, 09:46

Bom dia Anonimo.

Quando você diz "seja registrado duas vezes", é importante ter em mente que é possível que o Windows receba 2x o sinal de tecla, mas algum aplicativo (ou jogo) não o receba. Isso ocorre porque muitos aplicativos ignoram sinais de teclas sucessivos e muito rápidos.

No script abaixo, altere o valor da espera em milisegundos do comando Sleep conforme seja necessário até que o sinal seja reconhecido (no momento, 100ms):

Code: Select all

$s::
send s
sleep 100
send s
Return
Teste o código acima no bloco de notas para ver seu funcionamento. Depois, teste no aplicativo alvo e veja se o resultado foi o esperado. Se não funcionar no aplicativo alvo, pode tentar aumentar o tempo de espera OU verificar se o ciomando send não está sendo ignorado pelo aplicativo alvo (caso em que teria que buscar alternativas a esse comando).

OBS: Veja que utilizamos o modificador $ no nome da hotkey. Esse modificador impede que o comando Send ative a própria hotkey (afinal, ele enviará um sinal de S, e a hotkey é ativada quando se pressiona S. Mas com o modificador, o comando Send NÃO ativará a hotkey).
garry
Posts: 2630
Joined: 22 Dec 2013, 12:50

Re: Repetição de comandos (macro)

Post by garry » 07 Jan 2021, 10:54

@Gio Obrigado pelo comentário detalhado e solução
Post Reply

Return to “Ajuda e Suporte Geral”