controlclick con coordenadas

Instaladores automáticos de los programas.
Autoexecute: programar con el notepad, como Autoexec.bat comandos para Windows.No necesitan compilar o Instalar
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re:

Mensaje por user0109 »

BasicOs escribió:Hola,
O haces un controlclick sobre un control o bien haces un mouseclick sobre unas coordenadas. Son dos opciones excluyentes.

Puedes usar el creador de macros au3recorder :smt006 en Tools del Scite.

Seguro que quieres hacer un

Código: Seleccionar todo


Opt("MouseCoordMode", 0) ; coordenadas relativas a la ventana activa

mouseclick("left",400,208)
tambien puedes hacer un

Código: Seleccionar todo

send("{TAB}{SPACE}")
por medio del teclado para controles sin identificar, esto es más rápido que lo que quieres hacer. (recuerda el grabador de pulsaciones que te comento.

Salu2 :smt020
buenos dias, he estado intentando con estos dos metodos automatizar la parte final de la instalación de corel draw 12 pero sin exito alguno intente otro metodo como el controlclick y tampoco me dio resultado. Les envio las 4 capturas de lo que quiero automatizar

Imagen

Imagen

Imagen

Imagen


lo que esta encerrado con círculo rojo es lo que quiero que se ejecute por si solo.


Por favor espeo vuestra ayuda y agradezco de antemano su apoyo.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: controlclick con coordenadas

Mensaje por Ximorro »

Pues es lo mismo, con mouseclick usando coordenadas relativas no debes tener problemas.
Como son diálogos que mantienen el tamaño aunque cambies la resolución de la pantalla, al usar coordenadas relativas siempre pinchará en la parte de la ventana que quieres.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re: controlclick con coordenadas

Mensaje por user0109 »

Ximorro escribió:Pues es lo mismo, con mouseclick usando coordenadas relativas no debes tener problemas.
Como son diálogos que mantienen el tamaño aunque cambies la resolución de la pantalla, al usar coordenadas relativas siempre pinchará en la parte de la ventana que quieres.
una consulta, como puedo obtener las coordenadas relativas para la ubicación de cada boton que quiero activar en dichas ventanas?.
gracias.
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re: controlclick con coordenadas

Mensaje por user0109 »

No pasa nada, no funciona inclusive probe con un exe aparte para que hiciese la automatizacion final pero nada :smt009 .
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: controlclick con coordenadas

Mensaje por BasicOs »

Las coordenadas las ves, entre otras utilidades, con el Au3Info, lo tienes en el menu Tools del Scite. Pueden ser absolutas o relativas.
NO obstante puedes memorizar las teclas que pulsas con el Macro Recorder, y otros, tambien en Tools, que te genera el código. También lo puedes hacer a ojo facilmente :smt024 , con las funciones del tipo send() y con WinWait...()
Salu2:)
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re: controlclick con coordenadas

Mensaje por user0109 »

BasicOs escribió:Las coordenadas las ves, entre otras utilidades, con el Au3Info, lo tienes en el menu Tools del Scite. Pueden ser absolutas o relativas.
NO obstante puedes memorizar las teclas que pulsas con el Macro Recorder, y otros, tambien en Tools, que te genera el código. También lo puedes hacer a ojo facilmente :smt024 , con las funciones del tipo send() y con WinWait...()
Salu2:)
Lastimosamente no he tenido exito con estos metodos, incluso he tratado de hacer combinaciones con comandos en archivos cmd y los del script del mismo autoit pero nada aun, lo que he podido percatarme es de que cada vez que aparece la ventana del "Registro del producto" veo que se trata de un ejecutable llamado "registration.exe" y es en ese momento donde el icono del autoit (en la barra del systray) aparece con "Script paused" deteniendose todo.
Espero por favor alguna idea mas para probar,
gracias.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: controlclick con coordenadas

Mensaje por BasicOs »

Seguramente porque está esperando a algo, no obstante puedes tambien enviar combinaciones de teclas como Alt-A que suele servir para aceptar el registro.
Si lo deseas postea y código y detalla donde se te para con una flecha, y cualquiera de nosotros te podrá ayudar :smt026
Salu2:)
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re: controlclick con coordenadas

Mensaje por user0109 »

BasicOs escribió:Seguramente porque está esperando a algo, no obstante puedes tambien enviar combinaciones de teclas como Alt-A que suele servir para aceptar el registro.
Si lo deseas postea y código y detalla donde se te para con una flecha, y cualquiera de nosotros te podrá ayudar :smt026
Salu2:)
Haber aqui les dejo el codigo y la respectiva linea donde se detiene todo.

Run("Setup.exe")
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Requisitos mínimos del sistema")
Send("o")
WinWaitActive("CorelDRAW Graphics Suite 12 - InstallShield Wizard", "Contrato de licencia")
Send("e")
Send("!s")
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Información del cliente")
ControlSend("CorelDRAW(R) Graphics Suite 12", "&Número de serie:", "Edit1", "DR12WEX")
ControlSend("CorelDRAW(R) Graphics Suite 12", "&Número de serie:", "Edit2", "1504397")
ControlSend("CorelDRAW(R) Graphics Suite 12", "&Número de serie:", "Edit3", "KTY")
Send("!s")
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Selección de idiomas")
Send("!e")
Send("!s")
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Instalación personalizada")
Send("o")
Send("!s")
WinWaitActive("Información")
Send("{Enter}")
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Carpeta de destino")
Send("!i")
WinWaitActive("Registro del producto") <-------------------
ControlClick("Registro del producto", "", 1)
WinWaitActive("Registro del producto")
ControlClick("Registro del producto", "", 1012)
ControlClick("Registro del producto", "", 1)
WinWaitActive("Registro del producto")
ControlClick("Registro del producto", "", 1)
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Finalizado InstallShield Wizard de CorelDRAW Graphics Suite 12")
Send("{ENTER}")

Gracias por su apoyo.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: controlclick con coordenadas

Mensaje por Ximorro »

Respecto a las coordenadas relativas, es que igual no las estás cogiendo bien.

Resulta que la utilidad AU3Info, o yo no lo he visto o no da las coordenadas relativas del cursor A LA VENTANA. Lo que da en la pestaña Control son las coordenadas relativas respecto AL CONTROL.

Para obtener las coordenadas relativas al cliente (lo de dentro) de la ventana, que es lo que tienes que usar en MouseClik (y otras, como MouseMove) puedes usar el siguiente programita. Pero sigue leyendo abajo...

Código: Seleccionar todo

Opt("MouseCoordMode", 2)

Global $X, $Y, $relPos

while 1

    $relPos = MouseGetPos()

    $X = $relPos[0]

    $Y = $relPos[1]

    ToolTip($X & "," & $Y)

    Sleep(50)

WEnd

 
Es ultrasimple, para cerrarlo usad el icono de la barra de tareas...

Esto da las coordenadas relativas al cliente de la ventana ACTIVA (es diferente a AU3Info, que mira la ventana que está debajo aunque no esté activa).
Atención al 2 de "MouseCoordMode", prefiero este modo en vez de el modo 0 porque así no tiene en cuenta la barra de título y cosas así, de esta manera no afecta a las coordenadas que los títulos sean más o menos altos según pases de XP a Vista o a diferentes temas visuales.
Para usar entonces estas coordenadas es NECESARIO que tu programa también tenga:
Opt("MouseCoordMode", 2)

Si por alguna razón te empeñas en contar también los pixeles del título, pues usa
Opt("MouseCoordMode", 0)
tanto en tu programa como en EL MIO (para que te dé las coordenadas tal como las vas a usar tú en MouseClick y compañía).

Si veis util este programita lo pondré en el foro en alguna entrada más general para que lo vea la gente...

Ciao
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: controlclick con coordenadas

Mensaje por Ximorro »

Ayyyyyy, es verdad, con el Au3Info se puede hacer.
En el menú opciones puedes cambiar el CoordMode a Screen, Window o Client, y luego en la pestaña Mouse ves las coordenadas.

Si pones Client obtendrás las mismas coordenadas que con mi miniprograma. Bueno pues como ya está hecho ahí se queda, igual es útil para alguien...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: controlclick con coordenadas

Mensaje por Chefito »

Nas.
Prueba el código metiendo msgbox o consolewrite entre las lineas para saber verdaderamente donde se para. Me parece muy raro que se detenga ahí si te aparece la ventana y se activa. Vería más probable que se parase en la de abajo a causa de un fallo en el ID (Identificativo) del control.
Prueba esto a ver hasta donde llega:

Código: Seleccionar todo

Send("!i")

consolewrite("paso el send" & @cr)

WinWaitActive("Registro del producto") 

consolewrite("paso el winwaitactive" & @cr)

ControlClick("Registro del producto", "", 1)

consolewrite("paso el controlclick" & @cr)
Mira la consola a ver hasta que mensaje llega y ya nos contarás.
Por cierto, seguro que se puede poner ControlClick("Registro del producto", "", "Button1") en casi todos los casos :smt002 .
En las ventanas donde tengas que cambiar los radio buttons habría que mirarlo. Utiliza el AutoIt Window Info para ver las clases o identificativos de los controles y demás información. Lo trae el AutoIt.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re: controlclick con coordenadas

Mensaje por user0109 »

Chefito escribió:Nas.
Prueba el código metiendo msgbox o consolewrite entre las lineas para saber verdaderamente donde se para. Me parece muy raro que se detenga ahí si te aparece la ventana y se activa. Vería más probable que se parase en la de abajo a causa de un fallo en el ID (Identificativo) del control.
Prueba esto a ver hasta donde llega:

Código: Seleccionar todo

Send("!i")

consolewrite("paso el send" & @cr)

WinWaitActive("Registro del producto") 

consolewrite("paso el winwaitactive" & @cr)

ControlClick("Registro del producto", "", 1)

consolewrite("paso el controlclick" & @cr)
Mira la consola a ver hasta que mensaje llega y ya nos contarás.
Por cierto, seguro que se puede poner ControlClick("Registro del producto", "", "Button1") en casi todos los casos :smt002 .
En las ventanas donde tengas que cambiar los radio buttons habría que mirarlo. Utiliza el AutoIt Window Info para ver las clases o identificativos de los controles y demás información. Lo trae el AutoIt.

Saludos.
Lo probe pero no se muestra la consola, con respecto a la sugerencia de "Button1" fue lo que hice en un inicio pero no resulto para nada, sigue el problema, alguna otra sugerencia por favor?.
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re: controlclick con coordenadas

Mensaje por user0109 »

Probe tambien con el AU3Record 1.3 para que se crease automaticamente el script mediante la grabación de una instalación manual pero tampoco dio resultado porque aun asi se detiene en la misma parte del registro del producto :smt017, que les parece este caso?, si gustan pruebenlo ustedes, tienen el paquete instalador de corel draw 12? si gustan veo la forma de pasarlos para que ustedes mismos lo traten de hacer.
Agradezco nuevamente por su interes en ayudarme con este problema.
Saludos.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: controlclick con coordenadas

Mensaje por BasicOs »

Hola
Algo estás pasando por alto porque con au3info te da al información de las ventanas que necesitas,

no obstante puedes cambiar,
WinWaitActive("Registro del producto") <-------------------

Por
WinWait("Untitled", "", 5)
Sleep(2000)


y si no te funciona controlclick cambia lo que tengas con este
ControlClick("Registro del producto", "", 1)
por
send usandolo con simulación de teclas del tipo {DOWN} {DOWN} {TAB} {ENTER} , es posible Alt A... Mira la ayuda de send para detalles.
Y ajustalo a la necesidad concreta.

Este código no te fallará porque no depende de la ventana, sino que espera 5 segundos y luego 2 segundos, y después lanza las teclas como si las estuvieras pulsando realmente la teclas,
Salu2:)
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re: controlclick con coordenadas

Mensaje por user0109 »

BasicOs escribió:Hola
Algo estás pasando por alto porque con au3info te da al información de las ventanas que necesitas,

no obstante puedes cambiar,
WinWaitActive("Registro del producto") <-------------------

Por
WinWait("Untitled", "", 5)
Sleep(2000)


y si no te funciona controlclick cambia lo que tengas con este
ControlClick("Registro del producto", "", 1)
por
send usandolo con simulación de teclas del tipo {DOWN} {DOWN} {TAB} {ENTER} , es posible Alt A... Mira la ayuda de send para detalles.
Y ajustalo a la necesidad concreta.

Este código no te fallará porque no depende de la ventana, sino que espera 5 segundos y luego 2 segundos, y después lanza las teclas como si las estuvieras pulsando realmente la teclas,
Salu2:)
Ok lo probaré!.
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re: controlclick con coordenadas

Mensaje por user0109 »

No dió resultado mas bien quiero saber como puedo averiguar cuando un proceso ha comenzado a ejecutarse. Quiero intentarlo de otra forma.
Gracias.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: controlclick con coordenadas

Mensaje por Chefito »

user0109 escribió:Lo probe pero no se muestra la consola
Mmmmm.....lo tendrás plegado. Vete a la parte de abajo de la ventana del Scite con el cursor y despliegalo hacia arriba.
También te he dicho que puedes ver si llega a unos puntos con msgbox en vez de con consolewrite.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2083
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: controlclick con coordenadas

Mensaje por BasicOs »

El Au3Info es perfecto, pero aqui tienes otra herramienta más para inspeccionar controles, el Control Spy: :smt006
http://www.microsoft.com/downloads/deta ... n#Overview
Salu2:)
user0109
Mensajes: 10
Registrado: 26 Oct 2009, 09:30

Re: controlclick con coordenadas

Mensaje por user0109 »

Señores, gracias a Dios logré solucionar el problema mediante otro método, la clave es utilizar dos scripts en paralelo (al mismo tiempo), un script se encarga de iniciar la instalación, mientras que el otro se encarga de esperar a que se ejecute el famoso archivo de registro "registration.exe", una vez que aparece este ultimo en escena es atendido, es decir se encarga de automatizar el registro y finalmente cierra el proceso del script que se encargó de inicar la instalación (medio ortodoxo, pero resultó).
Si me permiten dejo los códigos de los dos scripts que me ayudaron a solucionar este problema:

Scritp para el inicio de la instalación (instalar.exe):

Run("Setup.exe")
Run("detectarproceso.exe")
WinWait("Untitled", "", 5)
Sleep(2000)
If WinActive("CorelDRAW(R) Graphics Suite 12", "Requisitos mínimos del sistema") Then
Send("o")
WinWaitActive("CorelDRAW Graphics Suite 12 - InstallShield Wizard", "Contrato de licencia")
Send("e")
Send("!s")
EndIf
If WinActive("CorelDRAW Graphics Suite 12 - InstallShield Wizard", "Contrato de licencia") Then
Send("e")
Send("!s")
EndIf
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Información del cliente")
ControlSend("CorelDRAW(R) Graphics Suite 12", "&Número de serie:", "Edit1", "DR12WEX")
ControlSend("CorelDRAW(R) Graphics Suite 12", "&Número de serie:", "Edit2", "1504397")
ControlSend("CorelDRAW(R) Graphics Suite 12", "&Número de serie:", "Edit3", "KTY")
Send("!s")
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Selección de idiomas")
Send("!e")
Send("!s")
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Instalación personalizada")
Send("o")
Send("!s")
WinWaitActive("Información")
Send("{Enter}")
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Carpeta de destino")
Send("!i")

Scritp para el registro (detectarproceso.exe):

WinWaitActive("Registro del producto", "Seleccione una de las siguientes opciones de registro:")
ControlClick("Registro del producto", "", 1)
WinWaitActive("Registro del producto")
ControlClick("Registro del producto", "", 1012)
ControlClick("Registro del producto", "", 1)
WinWaitActive("Registro del producto")
ControlClick("Registro del producto", "", 1)
WinWaitActive("CorelDRAW(R) Graphics Suite 12", "Finalizado InstallShield Wizard de CorelDRAW Graphics Suite 12")
Send("{SPACE}")
ProcessClose("instalar.exe")

Repito reconozco que es medio ortodoxo el metodo que he empleado pero en fin por lo pronto me ha ayudado a solucionar este problema
De todas maneras espero vuestros comentarios, sugerencias y criticas constructivas sobre este caso.
Nuevamente agradezco mucho la ayuda brindada por ustedes.
Saludos. :smt001
Responder