minimizar ventana sin tener su nombre
minimizar ventana sin tener su nombre
hola tengo una duda , es posible minimizar una ventana de firefox la cual no tengo el nombre concreto , y luego efectuar sobre ella un control send mientras que esta minimizada ? imaginemos que es www.autoit.com , segun en que parte de la pagina estemos va a tener un nombre distinto cada ventana ,por ejemplo:
Autoit en Español (www.autoit.es) * Publicar un nuevo tema - Mozilla firefox
Autoit en Español (www.autoit.es) * Pagina principal - Mozilla firefox
Autoit en Español (www.autoit.es) * Ver foro - Autoit en Español - Mozilla firefox
lo que se ve es que Autoit en Español (www.autoit.es * ) y - Mozilla firefox siempre se repite en todas las ventanas de www.autoit.com.
Si tubiera esas tres ventanas del ejemplo abiertas ,abria alguna manera de minimizar nose , Autoit en Español (www.autoit.es) * Pagina principal - Mozilla firefox pero sin que yo sepa que se llama asi.
o buscar algo de referencia
medio complicado lo veo ,pero quien sabe capas se pueda .
Autoit en Español (www.autoit.es) * Publicar un nuevo tema - Mozilla firefox
Autoit en Español (www.autoit.es) * Pagina principal - Mozilla firefox
Autoit en Español (www.autoit.es) * Ver foro - Autoit en Español - Mozilla firefox
lo que se ve es que Autoit en Español (www.autoit.es * ) y - Mozilla firefox siempre se repite en todas las ventanas de www.autoit.com.
Si tubiera esas tres ventanas del ejemplo abiertas ,abria alguna manera de minimizar nose , Autoit en Español (www.autoit.es) * Pagina principal - Mozilla firefox pero sin que yo sepa que se llama asi.
o buscar algo de referencia
medio complicado lo veo ,pero quien sabe capas se pueda .
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: minimizar ventana sin tener su nombre
¿Cuál es el criterio para elegir la ventana a minimizar? Eso es lo que tienes que trasladar al programa.
El caso es que debes distinguir de alguna manera qué ventana quieres minimizar, ¿qué tiene de especial para que quieras minimizarla?
Los comandos que buscan ventanas, además del nombre, también pueden buscar texto dentro de ellas, quizás con eso las distingas.
En el caso de minimizar, se haría con WinSetState(Titulo, Texto, @SW_MINIMIZE), donde en título yo pondría "Autoit en Español (www.autoit.es)" (la parte común) para restringir la búsqueda. En el parámetro de texto puedes poner algún texto de la ventana que la distinga de las demás.
Lo del texto no siempre es fiable 100%, funciona mejor con textos de controles como etiquetas, botones, cajas de texto, etc... tratándose de páginas web quizás toque tomar la dirección de la ventana en concreto, descargar el html y analizarlo...
Otra opción es la interacción con el usuario, quizás quieres minimizar la ventana activa en ese momento (muy fácil) o la que lleva más tiempo sin estar activa (para eso hay que estar monitorizándolas)...
Si acaso coméntanos cómo se elige la ventana a minimizar, a ver si podemos trasladar eso a AutoIt...
Respecto a ControlSend tengo malas noticias. Es cosa de suerte pero puede que no funcione cuando la ventana está minimizada, en la ayuda incluso recomiendan que el control tenga el foco...
Saludos
El caso es que debes distinguir de alguna manera qué ventana quieres minimizar, ¿qué tiene de especial para que quieras minimizarla?
Los comandos que buscan ventanas, además del nombre, también pueden buscar texto dentro de ellas, quizás con eso las distingas.
En el caso de minimizar, se haría con WinSetState(Titulo, Texto, @SW_MINIMIZE), donde en título yo pondría "Autoit en Español (www.autoit.es)" (la parte común) para restringir la búsqueda. En el parámetro de texto puedes poner algún texto de la ventana que la distinga de las demás.
Lo del texto no siempre es fiable 100%, funciona mejor con textos de controles como etiquetas, botones, cajas de texto, etc... tratándose de páginas web quizás toque tomar la dirección de la ventana en concreto, descargar el html y analizarlo...
Otra opción es la interacción con el usuario, quizás quieres minimizar la ventana activa en ese momento (muy fácil) o la que lleva más tiempo sin estar activa (para eso hay que estar monitorizándolas)...
Si acaso coméntanos cómo se elige la ventana a minimizar, a ver si podemos trasladar eso a AutoIt...
Respecto a ControlSend tengo malas noticias. Es cosa de suerte pero puede que no funcione cuando la ventana está minimizada, en la ayuda incluso recomiendan que el control tenga el foco...
Saludos
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: minimizar ventana sin tener su nombre
Hola , ya logre solucionar el tema de minimizarla gracias :) ,
pero no logre entender lo que me decias de control send.
porque intente hasta poniendo el nombre completo tomando como ejemplo google y tampoco me hace nisiquiera los TABs
ControlSend("Google - Mozilla Firefox", "", "", "{TAB}{TAB}{TAB}{TAB}")
en firefox que ahi que hacer para que funcione el control send?
pero no logre entender lo que me decias de control send.
porque intente hasta poniendo el nombre completo tomando como ejemplo google y tampoco me hace nisiquiera los TABs
ControlSend("Google - Mozilla Firefox", "", "", "{TAB}{TAB}{TAB}{TAB}")
en firefox que ahi que hacer para que funcione el control send?
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: minimizar ventana sin tener su nombre
Mira mejor la ayuda. Necesitas poner obligatoriamente el parámetro controlID (el identificador del control donde vas a mandar esa combinación de teclas). Tu lo has dejado en blanco. Tendrías que buscar el identificador del control y ponerlo. Esto se puede hacer con el programa espia de ventanas que trae autoit llamado "AutoIt Window Info" y señalando ese control. En el índice de la ayuda pon "controls" sin comillas y mira como se puede poner este parámetro.
Otra pregunta, pero que quieres hacer? mandar esa combinación de teclas a un control del programa firefox o a un control dentro de una página web?
Es que no es lo mismo. Si lo que quieres es trabajar con controles dentro de una página web utilizando el firefox te recomiendo que te bajes esta udf y mires sus funciones: http://www.autoitscript.com/forum/index ... ffau3&st=0
Saludos.
Otra pregunta, pero que quieres hacer? mandar esa combinación de teclas a un control del programa firefox o a un control dentro de una página web?
Es que no es lo mismo. Si lo que quieres es trabajar con controles dentro de una página web utilizando el firefox te recomiendo que te bajes esta udf y mires sus funciones: http://www.autoitscript.com/forum/index ... ffau3&st=0
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 ;).
Re: minimizar ventana sin tener su nombre
hola chefito hize lo que me dijistes de buscar el id y me quedo haci
WinSetState("Google - Mozilla Firefox","", @SW_MINIMIZE)
ControlSend("Google - Mozilla Firefox","", "MozillaUIWindowClass","www.autoit.es")
pero luego de minimizar no pasa nada :/
WinSetState("Google - Mozilla Firefox","", @SW_MINIMIZE)
ControlSend("Google - Mozilla Firefox","", "MozillaUIWindowClass","www.autoit.es")
pero luego de minimizar no pasa nada :/
Re: minimizar ventana sin tener su nombre
"MozillaUIWindowClass" es la clase de la ventana del Firefox, no de un control.
Leé el último post de Chefito. Repito la pregunta: ¿qué intentás hacer? ¿Manejar controles de la ventana de firefox o de una página web?
Si visitas el post que dejó chefito (bajando FF.au3 e instalando el addon MozRepl (necesario para manejar firefox)) podrás hacer lo que intentas hacer en esos ejemplos de una forma mucho más limpia y prolija. Una vez que instales el addon, vas a herramientas->MozRepl->Start. Ahí iniciás el addon y podrás manejar Firefox. Acá te hice el ejemplo que querías hacer:
Tiene un pequeño problema que tiene que ver con el nuevo diseño de la pág. de Google. Todos habrán notado el efecto "fade-in" que han agregado. Para que el script no quede colgado, necesitan mover el mouse dentro del explorador para provocar el fade-in y hacer que MozRepl notifique el fin de carga de la página y el script pueda continuar. Quizá pueda arreglarse inhabilitando JavaScript.
Y acá uno que encontré en el foro, que demuestra a grandes rasgos lo que podés hacer:
Si no es eso lo que querés hacer, entonces necesitás ser un poco más especifico.
Saludos.
Leé el último post de Chefito. Repito la pregunta: ¿qué intentás hacer? ¿Manejar controles de la ventana de firefox o de una página web?
Si visitas el post que dejó chefito (bajando FF.au3 e instalando el addon MozRepl (necesario para manejar firefox)) podrás hacer lo que intentas hacer en esos ejemplos de una forma mucho más limpia y prolija. Una vez que instales el addon, vas a herramientas->MozRepl->Start. Ahí iniciás el addon y podrás manejar Firefox. Acá te hice el ejemplo que querías hacer:
Código: Seleccionar todo
#Include <FF.au3>
_FFStart("http://www.google.com.ar/")
If _FFIsConnected() Then
$sInput = _FFObjGet("q", "name")
_FFObj($sInput, "value", "www.autoit.es")
$sBuscar = _FFObjGet("btnG", "name")
_FFClick($sBuscar)
EndIf
Y acá uno que encontré en el foro, que demuestra a grandes rasgos lo que podés hacer:
Código: Seleccionar todo
#include <FF.au3>
_FFStart("http://www.google.com.ar/")
If _FFIsConnected() Then
Sleep(2000)
_FFAction("presentationmode", True)
Sleep(2000)
_FFOpenURL("http://www.google.com")
Sleep(2000)
_FFAction("back")
_FFAction("presentationmode", False)
Sleep(2000)
_FFOpenURL("chrome:bookmarks")
Sleep(2000)
_FFAction("alert", "Bye bye ...")
_FFQuit()
EndIf
Saludos.
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
Re: minimizar ventana sin tener su nombre
hola nahuel , muchas gracias por responder :)
eso que me has puesto me serviria pero el problema es que mas gente utilizaria este programa ,y no creo que quieran estar intalando en firefox el addon MozRepl.
yo lo que quiero hacer es manejar firefox , no la pagina web que esta adentro :).sin instalar el FF.au3 ,no ahi manera de poder minimizar la ventana de firefox y por ejemplo cambiar de la pagina www.google.com a www.autoit.es ?
eso que me has puesto me serviria pero el problema es que mas gente utilizaria este programa ,y no creo que quieran estar intalando en firefox el addon MozRepl.
yo lo que quiero hacer es manejar firefox , no la pagina web que esta adentro :).sin instalar el FF.au3 ,no ahi manera de poder minimizar la ventana de firefox y por ejemplo cambiar de la pagina www.google.com a www.autoit.es ?
Re: minimizar ventana sin tener su nombre
Pues con FF.au3 sería muy fácil :P El problema es que la ventana de Firefox es un tanto... especial. Por lo que va a ser muy improlijo e inefectivo hacerlo como querés.
¿Por qué tiene que ser en Firefox? seguro la tarea se podría hacer más fácil y efectiva con IE, pues es más sencillo automatizarlo. Sería inclusive mejor dado que tu script será utilizado en otras computadoras.
Esto es lo único que puedo hacer. No funciona con la ventana minimizada, pues ControlSend necesita foco para funcionar con esta ventana. Luego de hacer que FF navegue a esa dirección, puedes minimizarla... pero seguro no es lo que querés.
¿Por qué tiene que ser en Firefox? seguro la tarea se podría hacer más fácil y efectiva con IE, pues es más sencillo automatizarlo. Sería inclusive mejor dado que tu script será utilizado en otras computadoras.
Esto es lo único que puedo hacer. No funciona con la ventana minimizada, pues ControlSend necesita foco para funcionar con esta ventana. Luego de hacer que FF navegue a esa dirección, puedes minimizarla... pero seguro no es lo que querés.
Código: Seleccionar todo
$s_FF = @ProgramFilesDir & "\Mozilla Firefox\firefox.exe"
$ci_FF = "[CLASS:MozillaUIWindowClass]"
$ci_FF_int = "[CLASSNN:MozillaWindowClass1]"
if Not WinExists($ci_FF) Then Run($s_FF)
WinWait($ci_FF)
Sleep(2000); Darle tiempo que termine de abrir
ControlFocus($ci_FF,"",$ci_FF_int)
ControlSend($ci_FF,"",$ci_FF_int,"!{d}")
ControlSend($ci_FF,"",$ci_FF_int,"www.autoit.es{enter}")
WinSetState($ci_FF,"",@SW_MINIMIZE)
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!