como poner tiempos a diferentes ejecuciones de teclas Topic is solved

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

gbariesgb
Posts: 7
Joined: 17 May 2018, 00:10

como poner tiempos a diferentes ejecuciones de teclas

20 May 2018, 01:28

Buenas tardes a todos, tengo una pequeña consulta.
1-Quisiera saber si despues ejecutar el ctrl+q y ctrl+p durante 2 horas, luego se ponga a ejecutar el ctrl+7 solo 1 vez.
2- y que regrese nuevamente al comienzo, repitiendo el mismo bucle. :| :shock:

Loop
{
SendInput {lctrl down}q{lctrl up}
Sleep 1000
SendInput {lctrl down}p{lctrl up}
Sleep 35000
}
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: como poner tiempos a diferentes ejecuciones de teclas

20 May 2018, 09:09

Hola, no se entiende bien, pero puede que el comando SetTimer te sirva.
Te dejo un ejemplo de como se usa:

Code: Select all

; ejecuta "etiqueta" cada 2 horas (debes especificar en milisegundos)
SetTimer etiqueta, % ( (1000 * 60) * 60 ) * 2    ; 7200000 ms = 2 h
Return

etiqueta:
SendInput {lctrl down}7{lctrl up}
Return
Si puede hacer funcionar todo tu código con SetTimer sin bucles mejor. Si necesitas añadir el Loop debes hacerlo antes del primer Return.
gbariesgb
Posts: 7
Joined: 17 May 2018, 00:10

Re: como poner tiempos a diferentes ejecuciones de teclas

20 May 2018, 16:56

Flipeador wrote:Hola, no se entiende bien, pero puede que el comando SetTimer te sirva.
Te dejo un ejemplo de como se usa:

Code: Select all

; ejecuta "etiqueta" cada 2 horas (debes especificar en milisegundos)
SetTimer etiqueta, % ( (1000 * 60) * 60 ) * 2    ; 7200000 ms = 2 h
Return

etiqueta:
SendInput {lctrl down}7{lctrl up}
Return
Si puede hacer funcionar todo tu código con SetTimer sin bucles mejor. Si necesitas añadir el Loop debes hacerlo antes del primer Return.


Gracias Flipeador por tu amable respuesta, pero mas que nada, si me dejo entender es que en este codigo:

SendInput {lctrl down}q{lctrl up}
Sleep 1000
SendInput {lctrl down}p{lctrl up}
Sleep 35000

-Cada 2 horas se detenga esta combinacion de teclas y luego de ese tiempo transcurrido ejecute el ctrl+7 durante 1 segundo y que esto lo haga indefinidamente sin parar.

por eso no se, si se cual seria mas factible con loop o set time :headwall:
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: como poner tiempos a diferentes ejecuciones de teclas

20 May 2018, 18:13

Prueba este código (sin probar)

Code: Select all

n := 1

SetTimer T1, -7200000

Loop
{
    Sleep 50
    If (n)
        SendInput {lctrl down}q{lctrl up}
    If (n)
        Sleep 1000
    If (n)
        SendInput {lctrl down}p{lctrl up}
    If (n)
        Sleep 35000
}

T1:
n := FALSE
s := A_TickCount
Loop
    If (A_TickCount-s > 1000)
        Break
    Else
        SendInput {lctrl down}7{lctrl up}
n := TRUE
SetTimer T1, -7200000
Return
Aunque seguramente hay una mejor manera de hacerlo.
gbariesgb
Posts: 7
Joined: 17 May 2018, 00:10

Re: como poner tiempos a diferentes ejecuciones de teclas

21 May 2018, 02:49

Flipeador wrote:Prueba este código (sin probar)

Code: Select all

n := 1

SetTimer T1, -7200000

Loop
{
    Sleep 50
    If (n)
        SendInput {lctrl down}q{lctrl up}
    If (n)
        Sleep 1000
    If (n)
        SendInput {lctrl down}p{lctrl up}
    If (n)
        Sleep 35000
}

T1:
n := FALSE
s := A_TickCount
Loop
    If (A_TickCount-s > 1000)
        Break
    Else
        SendInput {lctrl down}7{lctrl up}
n := TRUE
SetTimer T1, -7200000
Return
Aunque seguramente hay una mejor manera de hacerlo.

Bueno, he intentado pero no logro que ejecute, sera porque no me se explicarme bien :cry: .

algo asi seria la estructura:

Main-LOOP1

Ejecutar SUB-loop1 ;que se ejecute por 1 hora.

"aca entraria el (ctrl+ q) y (ctrl +p)"

SendInput {lctrl down}q{lctrl up}
Sleep 1000
SendInput {lctrl down}p{lctrl up}
Sleep 35000

Ejecutar SUB-loop2 ;que se ejecute 2 veces.

"aca entraria el Ctrl +7"

y que regrese al Main-LOOP1


-Algo muy similar a este enlace, donde tambien describe un problema parecido:
https://autohotkey.com/board/topic/1009 ... -new-loop/
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: como poner tiempos a diferentes ejecuciones de teclas  Topic is solved

21 May 2018, 08:12

Bueno, he intentado pero no logro que ejecute
Detalles del por qué no te funciona estaría bien.

sera porque no me se explicarme bien
Cada 2 horas se detenga esta combinacion de teclas [...]
Ejecutar SUB-loop1 ;que se ejecute por 1 hora.
...

Ejecutar SUB-loop2 ;que se ejecute 2 veces.
ejecute el ctrl+7 durante 1 segundo
¿A que te refieres que el Loop se ejecute 2 veces?


Prueba:

Code: Select all

Loop
{
    s := A_TickCount
    While (A_TickCount-s < 3600000)
    {
        SendInput {lctrl down}q{lctrl up}
        Sleep 1000
        SendInput {lctrl down}p{lctrl up}
        Sleep 35000
    }

    SendInput {lctrl down}7{lctrl up}
    Sleep 500
    SendInput {lctrl down}7{lctrl up}
}
gbariesgb
Posts: 7
Joined: 17 May 2018, 00:10

Re: como poner tiempos a diferentes ejecuciones de teclas

21 May 2018, 10:37

Flipeador wrote:
Bueno, he intentado pero no logro que ejecute
Detalles del por qué no te funciona estaría bien.

sera porque no me se explicarme bien
Cada 2 horas se detenga esta combinacion de teclas [...]
Ejecutar SUB-loop1 ;que se ejecute por 1 hora.
...

Ejecutar SUB-loop2 ;que se ejecute 2 veces.
ejecute el ctrl+7 durante 1 segundo
¿A que te refieres que el Loop se ejecute 2 veces?


Prueba:

Code: Select all

Loop
{
    s := A_TickCount
    While (A_TickCount-s < 3600000)
    {
        SendInput {lctrl down}q{lctrl up}
        Sleep 1000
        SendInput {lctrl down}p{lctrl up}
        Sleep 35000
    }

    SendInput {lctrl down}7{lctrl up}
    Sleep 500
    SendInput {lctrl down}7{lctrl up}
}

a esta parte


Ejecutar SUB-loop2 ;que se ejecute 2 veces


me refiero a que ese comando se ejecute por 2 segundos y que regrese al main Loop
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: como poner tiempos a diferentes ejecuciones de teclas

21 May 2018, 12:30

Pues modifica el CTRL+7 usando la misma lógica que el While de arriba. Repite el mismo código agregando otro While y cambia el numero por el tiempo deseado en milisegundos.
gbariesgb
Posts: 7
Joined: 17 May 2018, 00:10

Re: como poner tiempos a diferentes ejecuciones de teclas

21 May 2018, 14:53

Flipeador wrote:Pues modifica el CTRL+7 usando la misma lógica que el While de arriba. Repite el mismo código agregando otro While y cambia el numero por el tiempo deseado en milisegundos.
pues al final lo modifique tal como me dijistes y me funciono bien tal como queria.

Loop
{
s := A_TickCount
While (A_TickCount-s < 3600000)
{
SendInput {lctrl down}q{lctrl up}
Sleep 1000
SendInput {lctrl down}p{lctrl up}
Sleep 35000
}

m := A_TickCount
While (A_TickCount-m < 2000)
{
SendInput {lctrl down}8{lctrl up}
Sleep 500
SendInput {lctrl down}8{lctrl up}
}
}




pero no se si esta bien puesto el while porque le puse m o algo derepente me equivoco. :?
Attachments
Nuevo AutoHotkey Script.ahk
(392 Bytes) Downloaded 55 times
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: como poner tiempos a diferentes ejecuciones de teclas

21 May 2018, 14:58

Si, esta bien así, me alegro que te haya funcionado. Da igual si pones m o s o cualquier otro nombre de variable.
Saludos.

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 18 guests