Ajuda com macro

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

Moderator: Gio

cmbenevides
Posts: 2
Joined: 19 May 2022, 07:30

Ajuda com macro

Post by cmbenevides » 19 May 2022, 07:35

Bom dia senhores. Sou novo no AHK, mais já aprendi a fazer algumas macros. gostaria de saber como faço pra minha macro pausar em determinado ponto, e voltar a partir de uma nova ação. Tipo, ela vem executando, mais chega num momento que ela para, pois preciso digitar um captcha manualmente, e depois que eu der um "enter" ela continuar.

,::
Send {Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}
SendInput, o
send {Up}{Up}
send {Tab}
SendInput, 2022-05-24
sleep, 150
MouseClick, left, 511, 467
sleep, 150
MouseClick, left, 494, 423, 10
sleep, 150
Mousemove, 1032, 785

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

Re: Ajuda com macro

Post by Gio » 19 May 2022, 09:07

Bom dia cmbenevides.

Seja bem-vindo ao fórum da comunidade do AutoHotkey.

Você pode fazer isso de várias formas. Uma delas é condicionar o código a uma variável que seja usada para anotar execuções anteriores.

Exemplo: No código abaixo, ao pressionar a tecla F2 a primeira vez, o script escreverá a palavra "Este é", e ao pressionar a mesma teclas uma segunda vez, escreverá " um exemplo".

Code: Select all

Estado = 0
F2::
If (Estado = 0)
{
	Send, Este é
	Estado := 1
}
Else if (Estado = 1)
{
	Send %A_Space%um exemplo
	Estado := 0
}
Return

Outra forma de fazer isso é simplesmente dividir em duas hotkeys diferentes. Uma cuidará da primeira parte e outra cuidará da segunda. Neste caso o usuário ficaria responsável por decidir qual seguimento do código rodar após responder o captcha. No exemplo abaixo, F2 escreve a primeira parte e F3 escreve a segunda.

Code: Select all

F2::
Send, Este é
Return


F3::
Send %A_Space%um exemplo
Return

Também é possível de fato pausar o código no meio do script mediante alguma situação específica. Neste caso, você precisaria que o script contenha um sensor para a condição-alvo. Por exemplo, se aparece uma imagem na tela (como a do recaptcha) quando ele deve parar e depois essa imagem some quando ele deve prosseguir, você pode escrever uma rotina com imagesearch ou PixelSearchque pause o script caso a imagem exista na tela a partir de um while + imagesearch + sleep colocados no momento da verificação/pausa desejada.

Code: Select all

Send Este é ; Este send simboliza comandos anteriores.
Var := 1 ; começamos definindo Var como 1 para que o while abaixo execute pelo menos 1 vez.
While (Var = 1) ; Depois usamos um while-loop para verificar Var. Isso vai rodar tantas vezes quanto necessário até que Var deixe de ser igual a 1.
{
	imagesearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, ImageFile ; Aqui pesquisamos a imagem desejada (tipo a imagem do recaptcha)
	If (ErrorLevel = 0) ; Se ErrorLevel for 0 logo na saída do comando acima, isso significa que a imagem foi localizada.
	{
		Sleep 500 ; Nesse caso fazer o script "dormir" por 0,5 segundos.
	}
	Else ; Mas se o contrátio acontecer (ou seja, se ErrorLevel não for 0, o que ocorre quando a imagem NÃO foi localizada
	{
		Var = 0 ; Simplesmente redefinimos a Var como 0. Isso vai fazer com que o While-loop quebre e a execução continue
	}
}
Send %A_Space%um exemplo ; Este send simboliza comandos posteriores (vai rodar quando a imagem do recaptcha sumir)

Tem outras formas de fazer isso também, mas creio que com essas você já consegue ter algumas ideias. Espero te ajudado, caso ainda tenha alguma dúvida sobre isso, basta postar abaixo.

cmbenevides
Posts: 2
Joined: 19 May 2022, 07:30

Re: Ajuda com macro

Post by cmbenevides » 19 May 2022, 15:01

Então caro amigo, boa tarde !

deixa eu tentar me explicar melhor. Acesso um site onde as quintas feiras, em horário exatos, precisamos entrar em um determinado sistema, clicar em um botao "novo", selecionar convenio, data, clicar em gerar o captcha, digitar o captcha( esse momento seria manual), clicar em filtrar. Onde o sistema me retorna uma série de resultados (serviços) com horários diferentes, onde existe um botão "eu vou", que eu preciso clicar nele. Porém isso tem q ser feito em segundos, pois é "guerra da carne", quem clicar primeiro pega o serviço. Se você tiver uma noção melhor, entra em contato comigo por gentileza [email protected] tem muita gente interessado em resolver isso, entendeu ! Desde já te agradeço.

Post Reply

Return to “Ajuda e Suporte Geral”