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
Ajuda com macro
Moderator: Gio
Re: Ajuda com macro
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".
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.
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.
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.
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.
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
-
- Posts: 2
- Joined: 19 May 2022, 07:30
Re: Ajuda com macro
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 cmedeirosbenevides@gmail.com tem muita gente interessado em resolver isso, entendeu ! Desde já te agradeço.
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 cmedeirosbenevides@gmail.com tem muita gente interessado em resolver isso, entendeu ! Desde já te agradeço.