Ajuda com Script Topic is solved

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

Moderator: Gio

Bandolero1571
Posts: 5
Joined: 23 Nov 2020, 23:13

Ajuda com Script

Post by Bandolero1571 » 21 May 2022, 21:35

Salva rapaziada, boa noite!

Estou tentando fazer um script que faça a repetição de um comando por um tempo determinado e em seguida pause. Depois de algumas pesquisas cheguei no seguinte Script:

Code: Select all

a::
SetTimer, Teste, 500
Return

Teste:
ControlSend, ahk_parent, {b down}, ahk_class ...
ControlSend, ahk_parent, {b up}, ahk_class ...
Return
O problema é que ele fica repetindo o envio do "b" indefinidamente enquanto o meu objetivo é que ele execute por apenas alguns segundos. Então venho até vocês solicitar ajuda :D Como fazer essa repetição durar um período de 5s, por exemplo?
Desde já agradeço
Forte abraço.

User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Ajuda com Script  Topic is solved

Post by Gio » 23 May 2022, 08:52

Bom dia Bandolero1571.

Você pode fazer uso da variável embutida A_tickCount para isso. Essa variável contém o número aproximado de milisegundos desde que o sistema foi iniciado. Sendo assim, o que você deve fazer é salvar o valor dela no início da execução e depois comparar (subtraindo) com o valor obtido em cada nova iteração de um loop. Caso o valor da diferença ultrapasse o número de milisegundos que você quiz que a execução durasse, você termina o loop.

Exemplo: O código abaixo exibe um contador durante 10 segundos. Veja como o loop executa verificando e demonstrando o tempo transcorrido através da diferença em A_tickCount e como ele para quando a diferença atinge 10 segundos.

Code: Select all

INICIO := A_tickCount

Loop
{
	If (A_tickCount - INICIO) >= 10000 ; Se a diferença for maior que 10000 milisegundos (10 segundos)...
	{
		Break ; Terminamos o loop abruptamente aqui.
	}
	; Do contrário prosseguimos calculando a diferença e exibindo no tooltip
	TEMPO_TRANSCORRIDO := (A_tickCount - INICIO) / 1000
	ToolTip, Tempo Transcorrido: %TEMPO_TRANSCORRIDO%
}
msgbox, 0, Aviso, Contagem dos 10 segundos terminada ! ; O código que estiver a partir daqui executa APÓS o loop terminar.
OBS: o contador não chega a exatos 10.0000 por duas razões: primeiro que as instruções levam alguns milisegundos para serem processadas (veja SetBatchLines) e segundo que a verificação no código está ANTES do comando que atualiza o tooltip (se fosse depois o último tooltip seria em 10.000120 ou coisa parecida).

Bandolero1571
Posts: 5
Joined: 23 Nov 2020, 23:13

Re: Ajuda com Script

Post by Bandolero1571 » 23 May 2022, 17:53

Muito obrigado pela resposta Gio, eu estava tão perdido que nem sabia expressar minha dúvida rs

Consegui adaptar o script e funcionou como eu queria. Mais uma vez muito obrigado :clap:

Post Reply

Return to “Ajuda e Suporte Geral”