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).