Como ejecutar un script con una sola combinación

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Como ejecutar un script con una sola combinación

Re: Como ejecutar un script con una sola combinación

Post by sebaramos » 18 Dec 2017, 14:05

A_AhkUser finalmente dejè el Script así,

#c::
Run, "C:\Program Files\Qlikview\Qv",,, PID ; lanza la bloca de notas y salva su PID (ID del programa) en la variable 'PID'

WinWait, ahk_pid %PID% ; espera hasta que la ventana aparezca
WinActivate
WinWaitActive

MouseClick, LEFT, 30 , 65 , 1
MouseClick, LEFT, 150, 65 , 1
sleep, 4000
MouseClick, LEFT, 516, 766, 1

return


y funciona a la perfección.....muchas gracias por la ayuda.


La última consulta y no molesto mas por hoy jajjaja como puedo copiar y pegar una url de internet y copiarla en un excel .......es el siguiente paso de mi automatización........tengo un tema con esta pregunta en el foro sin respuesta aún .....espero puedas ayudarme....un gran abrazo y gracias por compartir tus conocimientos!!

Re: Como ejecutar un script con una sola combinación

Post by A_AhkUser » 18 Dec 2017, 12:56

Acabo de comprobar el script mas abajo y parece que funciona bien con la bloca de notas; el script tira un MsgBox tanto pronto como aparece la primera ventana y luego, lo segundo tanto pronto como aparece una ventana-hija del proceso notepad:

Code: Select all

#c::
Run, notepad,,, PID ; lanza el programa y salva su PID (ID del programa) en la variable 'PID'
WinWait % (AHKPID:="ahk_pid " . PID) ; espera hasta que la ventana del proceso aparezca
ID := WinExist() ; la funcion WinExist sin parametros devuelve el ID de la 'LastFound' ventana que WinWait actualiza;  el ID es salvado en la variable 'ID'
WinActivate ; sin parametro; misma  logica que arriba
WinWaitActive
MsgBox, 1
Loop { ; repite el codigo infinitamente...
	WinWaitNotActive
} Until (WinExist(AHKPID) <> ID) ;  ... salvo que la ventana que ahora es activa en lugar de la ventana inicial pertenece al mismo proceso (puede rescatar el ID de esta ventana y salvarlo como lo he hecho arriba si fuera necesario)
WinWaitActive
sleep, 400 ; añade eso si sigue no funcionando
MsgBox, 2
return
Si sigue no funcionando quizas debas añadir un sleep después de ultimo WinWaitActive:

Code: Select all

WinWaitActive
sleep, 400

Re: Como ejecutar un script con una sola combinación

Post by sebaramos » 18 Dec 2017, 12:18

Hola A_AhkUser,

La ventana que se abre es del mismo programa (proceso), ejecuté tu Script y no se ejecuta el tercer click ......si puedes seguir ayudándome te lo agradecería, un gran saludo!

Re: Como ejecutar un script con una sola combinación

Post by A_AhkUser » 18 Dec 2017, 10:40

Hola sebaramos,

Puedes por ejemplo utilizar WinWaitNotActive en un loop (un bucle) inmediatamente después del segundo clic, comprobando a cada iteracion si la ventana que ahora ocupa el lugar de la primera pertenece al proceso:

Code: Select all

#c::
Run, "C:\Program Files\Qlikview\Qv",,, PID ; lanza el programa y salva su PID (ID del programa) en la variable 'PID'
WinWait % (AHKPID:="ahk_pid " . PID) ; espera hasta que la ventana del proceso aparezca
ID := WinExist() ; la funcion WinExist sin parametros devuelve el ID de la 'LastFound' ventana que WinWait actualiza;  el ID es salvado en la variable 'ID'
WinActivate ; sin parametro; misma  logica que arriba
WinWaitActive
MouseClick, LEFT, 30 , 65 , 1
MouseClick, LEFT, 150, 65 , 1
Loop { ; repite el codigo infinitamente...
	WinWaitNotActive
} Until (WinExist(AHKPID) <> ID) ;  ... salvo que la ventana que ahora es activa en lugar de la ventana inicial pertenece al mismo proceso (puede rescatar el ID de esta ventana y salvarlo como lo he hecho arriba si fuera necesario)
WinWaitActive
MouseClick, LEFT, 516, 766, 1
return

[EDIT] He sustituido Until (WinActive(AHKPID) <> ID) por Until (WinExist(AHKPID) <> ID)

Re: Como ejecutar un script con una sola combinación

Post by sebaramos » 18 Dec 2017, 09:06

Hola A_AhkUser,

Muchas gracias mostro! corre super, pero quisiera seguir abusando de sus buenas voluntades y espero puedan seguir ayudándome, la consulta es la siguiente:

Al ejecutarse el 2do Click (MouseClick, LEFT, 150, 65, 1) El programa que estoy automatizando carga una nueva ventana dentro del mismo.....por lo que el tercer Click (MouseClick, LEFT, 516, 766, 1) no se ejecuta, me imagino que es por la misma razón que no se ejecutaba en un principio(demora en cargar la nueva ventana). Me imagino que la nueva ventana debe tener una ID propia que pueda guarda en una variable como lo Hiciste con el ID del programa?? Que Script me serviría en este caso ya que no tengo la ruta de la ventana de un programa, solo la del programa mismo..... o existe un script que permita esperar que cargue la ventana y luego se ejecute el tercer Click sin ID??

Re: Como ejecutar un script con una sola combinación

Post by A_AhkUser » 15 Dec 2017, 14:20

Hola,

Prueba el codigo siguiente:

Code: Select all

#c::
Run, "C:\Program Files\Qlikview\Qv",,, PID ; lanza la bloca de notas y salva su PID (ID del programa) en la variable 'PID'
WinWait, ahk_pid %PID% ; espera hasta que la ventana aparezca
WinActivate
WinWaitActive
MouseClick, LEFT, 30 , 65 , 1
MouseClick, LEFT, 150, 65 , 1
MouseClick, LEFT, 516, 766, 1
return

Re: Como ejecutar un script con una sola combinación

Post by sebaramos » 15 Dec 2017, 12:36

Hola Flipeador, muchas gracias por responder, al ejecutar el código las filas de Mouseclick realizan el Click antes de que el programa se abra, ¿como puedo esperar a que abra el programa y que luego se ejecuten los clicks? gracia por la pronta respuesta Flipeador

Re: Como ejecutar un script con una sola combinación

Post by Flipeador » 15 Dec 2017, 09:46

Hola,

Code: Select all

#c::
Run, "C:\Program Files\Qlikview\Qv"
MouseClick, LEFT, 30 , 65 , 1
MouseClick, LEFT, 150, 65 , 1
MouseClick, LEFT, 516, 766, 1
return

Como ejecutar un script con una sola combinación

Post by sebaramos » 15 Dec 2017, 08:58

Hola estimados, junto con saludar quisiera consultar (Sé que debe ser muy fácil pero soy novato en este tema) como puedo ejecutar el siguiente Script solo realizando la combinación de teclas #c y no tener que presionar por separado todas las combinaciones que se muestran a continuación.


#c:: run C:\Program Files\Qlikview\Qv

#d:: MouseClick LEFT, 30, 65, 1
#e:: MouseClick LEFT, 150, 65, 1
#f:: MouseClick LEFT, 516, 766, 1

return

De antemano muchas gracias!!!

Top