Esperar que una sub-ventana cargue antes de ejecutar un MouseClick, posee la misma clase y proceso que la anterior

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.
sebaramos
Posts: 19
Joined: 14 Dec 2017, 08:37

Esperar que una sub-ventana cargue antes de ejecutar un MouseClick, posee la misma clase y proceso que la anterior

09 Jan 2018, 10:07

Hola estimados,

Junto con saludar, quisiera consultar por una Script que me permita ejecutar el siguiente código:

Code: Select all

#w::

MouseClick, LEFT, 40, 64, 1 ;;;Recargar

;;;Propiedades de Hoja [Principal]
::ahk_class #32770
;;ahk_exe Qv.exe

MouseClick, LEFT, 370, 509, 1 ;;;Aceptar
Donde la ventana que se genera al hacer el primer Click es una sub-ventana del mismo proceso y clase del anterior (Que indico en el código). Lo que me gustaría hacer es que antes de hacer el segundo click, el programa espere que se cargue esta sub-ventana y luego se ejecute el siguiente click. Desde ya muchas gracias!
A_AhkUser
Posts: 872
Joined: 06 Mar 2017, 16:18
Location: France

Re: Esperar que una sub-ventana cargue antes de ejecutar un MouseClick, posee la misma clase y proceso que la anterior

09 Jan 2018, 10:39

Hola :wave:
[...] la ventana que se genera al hacer el primer Click [...]
En primer lugar, y en el caso en que el MouseClick sea necesario para pulsar un botón, sepa que existe ControlClick. Es mas reliable. Cada botón tiene al igual de las ventanas una clase - por ejemplo, si la clase de tu boton es Button_1:

Code: Select all

ControlClick, Button_1, ahk_exe miPrograma.exe
[...] es una sub-ventana del mismo proceso y clase del anterior [...]
Puedes utilzar WinWaitNotActive y luego WinWaitActive, con los mismos parametros si utiliza solo el ahk_exe, en la medida en que la ventana que se abre desactiva la ventana activa activàndose.

Code: Select all

ControlClick, Button_1, ahk_exe miPrograma.exe
WinWaitNotActive, ahk_exe miPrograma.exe
sleep, 200
WinWaitActive, ahk_exe miPrograma.exe
sleep, 200
; ... codigo
[...] posee la misma clase y proceso que la anterior [...]
puedes tambien seguir limitando la selección mediante variados criterios:

Code: Select all

WinWait título ahk_class Notepad ahk_exe notepad.exe
[url=https://autohotkey.com/boards/viewtopic.php?f=56&p=215673#p215673][b][font=Segoe UI][color=#1ea2db]Video Game[/color] [color=#bbbbbb]Reader[/color][/font][/b][/url] eAutocomplete

sebaramos
Posts: 19
Joined: 14 Dec 2017, 08:37

Re: Esperar que una sub-ventana cargue antes de ejecutar un MouseClick, posee la misma clase y proceso que la anterior

09 Jan 2018, 13:08

Excelente ! funciona muy bien .... avanzando me topé con otro desafío xD.... resulta que tengo una ventana que carga datos pero sigue siendo la misma y al aplicar WinWaitNotActive y luego WinWaitActive se desactiva la ventana y no ejecuta el siguiente Click......como sería en ese caso ya que si abro otra cosa y vuelvo a la venta se ejecuta ya que se activa .....
sebaramos
Posts: 19
Joined: 14 Dec 2017, 08:37

Re: Esperar que una sub-ventana cargue antes de ejecutar un MouseClick, posee la misma clase y proceso que la anterior

10 Jan 2018, 08:24

Al hacer Click en un botón "Siguiente", este me carga datos desde una web y me los muestra por QlikView en la misma ventana, donde solo cambian nuevamente el titulo de la ventana y se mantiene el nombre de su clase y proceso.... resulta que si abro otra cosa por ejemplo excel, y luego vuelvo a la ventana en cuestión, se termina de ejecutar el codigo........

y tengo otra consulta respecto a controlClick...........

Encontré este ejemplo y funciona muy bien:

ControlClick, Button5, Calc,

Presiona un botón de la calculadora...

Yo probé de las siguientes dos formas y me fue mal:

ControlClick, button_15, ahk_exe Qv.exe

ControlClick, button_15, Qv,

Use el nombre que me entrega Window Spy después de ClassNN:


Desde ya gracias por su ayuda!
A_AhkUser
Posts: 872
Joined: 06 Mar 2017, 16:18
Location: France

Re: Esperar que una sub-ventana cargue antes de ejecutar un MouseClick, posee la misma clase y proceso que la anterior

10 Jan 2018, 11:37

- Si el titulo cambia y ninguna ventana puede interferir mas adelante, especifica unicamente los ahk_exe y ahk_class o, como ya te lo he indicado, sigue limitando la selección mediante variados criterios:

Code: Select all

WinWaitNotActive título ahk_class Notepad ahk_exe notepad.exe
Alternativamente puedes rescatar el titulo antes te presionar el boton y esperar que el titulo de la ventana cambie:

Code: Select all

#s::
WinGetTitle, titulo, ahk_exe notepad.exe
WinWaitNotActive % titulo
MsgBox
; codigo...
return
#u::WinSetTitle, ahk_exe notepad.exe,, test ; cambia el titulo de la ventana
Yo probé de las siguientes dos formas y me fue mal:
- Quizas yo te haya llevado al error con el Button_1 :shifty: : en lugar de button_15 trata button15 y deberia funcionar porque, por lo demás, el codigo es correcto.

Saludos
[url=https://autohotkey.com/boards/viewtopic.php?f=56&p=215673#p215673][b][font=Segoe UI][color=#1ea2db]Video Game[/color] [color=#bbbbbb]Reader[/color][/font][/b][/url] eAutocomplete

sebaramos
Posts: 19
Joined: 14 Dec 2017, 08:37

Re: Esperar que una sub-ventana cargue antes de ejecutar un MouseClick, posee la misma clase y proceso que la anterior

18 Jan 2018, 14:14

Hola A_AhkUser,

Como siempre agradezco tu ayuda, me funcionó perfecto, excepto la función ControlClick, ya que todos los botones en el programa que trabajo tienen la misma clase.....por lo que estoy trabajando en algunos casos con MouseClick y en otros con ControlClick pero con coordenadas ya que por alguna razón a veces el ControlClick con coordenadas no se ejecuta , después lo intento y si lo hace ......no se por que pero en definitiva me las arreglo para que funcione.

Tengo otra consulta estimado respecto a la gestión de ventanas, en el siguiente código, quisiera rescatar el titulo de la venta como mencionaste arriba ya que debo descargar muchos archivos desde una página y los títulos de las ventanas van cambiando a cada momento y necesito trabajar con ellas posteriormente. La consulta es ya capturado el título de la ventana, la llamo pero cuando quiero llamar a otra venta después de esta, no se puede pero si llamo nuevamente a la ventana que capte el titulo se abre sin problemas y luego se abre la otra .........espero me haya explicado bien....de todas maneras dejo el código con el que estoy probando.

#d::

MouseClick, LEFT, 90, 144, 1 ;;;Exportar a excel Santiago 1

Sleep, 2000

WinGetTitle, titulo, ahk_exe EXCEL.EXE
WinWaitNotActive % titulo

Sleep, 1000

#a::

IfWinExist Importar datos web8 - Excel
{
WinActivate
}

Sleep, 2000

return

#b::

IfWinExist %titulo%
{
WinActivate
}

return



Quedo pendiente como siempre a tu ayuda, muchas gracias!
A_AhkUser
Posts: 872
Joined: 06 Mar 2017, 16:18
Location: France

Re: Esperar que una sub-ventana cargue antes de ejecutar un MouseClick, posee la misma clase y proceso que la anterior

19 Jan 2018, 11:37

sebaramos wrote:espero me haya explicado bien....
No sé pero, por mi parte, no termino tratando intenderlo... Es posible que sea lo que buscas:

Code: Select all

#NoEnv
#SingleInstance force
SetWorkingDir % A_ScriptDir
SendMode, Input
#Warn
; Windows 8.1 64 bit - Autohotkey v1.1.27.04 32-bit Unicode


#d::
MouseClick, LEFT, 90, 144, 1
Sleep, 2000
WinGetTitle, titulo, ahk_exe EXCEL.EXE
WinWaitNotActive % titulo
Sleep, 1000
SetTimer, subroutina1, -1
SetTimer, subroutina2, -1
return

subroutina1:
WinWait, Importar datos web8 - Excel
WinActivate
MsgBox, 1
return
subroutina2:
WinWait, %titulo%
WinActivate
MsgBox, 2
return
[url=https://autohotkey.com/boards/viewtopic.php?f=56&p=215673#p215673][b][font=Segoe UI][color=#1ea2db]Video Game[/color] [color=#bbbbbb]Reader[/color][/font][/b][/url] eAutocomplete


Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 3 guests