Encontrar ventanas con expresiones regulares
Encontrar ventanas con expresiones regulares
Acabo de comenzar a utilizar Autoit y la verdad es que para automatizar algunas tareas esta muy bien.
Ya he conseguido hacer que me abra una serie de progamas y los coloque en un sitio concreto, esta muy bien explicado en la ayuda.
Ahora quiero dar un paso mas y me gustaria crear un codigo que me permita lo siguiente:
Me gustaria poder contar ventanas que contengan una palabra concreta.
Por ejemplo, saber cuantos "Notepad" tengo abiertos, ¿Cual seria el camino a seguir?
Ya he conseguido hacer que me abra una serie de progamas y los coloque en un sitio concreto, esta muy bien explicado en la ayuda.
Ahora quiero dar un paso mas y me gustaria crear un codigo que me permita lo siguiente:
Me gustaria poder contar ventanas que contengan una palabra concreta.
Por ejemplo, saber cuantos "Notepad" tengo abiertos, ¿Cual seria el camino a seguir?
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Encontrar ventanas con expresiones regulares
Mira la función Winlist en la ayuda. Te da un array con el número de ventanas de windows. Solamente tienes que llamar a esta función y hacer un bucle for para comparar el texto de la ventana que quieres encontrar con el que te da winlist. Metes dentro un contador y listo .
Para encontrar un texto determinado dentro del título de la ventana puedes utilizar la función stringinstr.
Mira el ejemplo de winlist y adáptalo.
Saludos.
Para encontrar un texto determinado dentro del título de la ventana puedes utilizar la función stringinstr.
Mira el ejemplo de winlist y adáptalo.
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: Encontrar ventanas con expresiones regulares
Gracias por la respuesta, pero la verdad es que no he entendido nada y lo peor, que no creo que sea porque lo hayas expresado mal.
Empezare por preguntas mas simples.
Gracias de nuevo.
Empezare por preguntas mas simples.
Gracias de nuevo.
Re: Encontrar ventanas con expresiones regulares
Ya le voy cogiendo el hilo y ha conseguido contar las ventanas que quiera.
Ahora el paso siguiente, ¿Como hago para que se "refresque" y me vaya diciendo las ventanas a tiempo real?
Codigo para contar ventanas que he hecho:
Ahora el paso siguiente, ¿Como hago para que se "refresque" y me vaya diciendo las ventanas a tiempo real?
Codigo para contar ventanas que he hecho:
Código: Seleccionar todo
;Contando Ventanas.
Local $Ventanas = WinList ("[REGEXPTITLE:Nuevo\s]")
If $Ventanas [0][0] >= 0 Then
MsgBox (0, "Ventanas", "Numero de Ventanas = "& $Ventanas [0][0])
EndIf
Re: Encontrar ventanas con expresiones regulares
Bienvenido a Autoit gvshol:
Ya verás como poco a poco avanzas y vas queriendo hacer cosas más complicadas.
Para hacer ese "refresco" que comentas, puedes utilizar la función While ... WEnd, poniendo tu código dentro.
Dependiendo de la necesidad de "refresco" que tengas, puedes poner un Sleep para que haga una pausa entre esas solicitudes de datos de Winlist
Espero que te sirva para avanzar ...
Ya verás como poco a poco avanzas y vas queriendo hacer cosas más complicadas.
Para hacer ese "refresco" que comentas, puedes utilizar la función While ... WEnd, poniendo tu código dentro.
Dependiendo de la necesidad de "refresco" que tengas, puedes poner un Sleep para que haga una pausa entre esas solicitudes de datos de Winlist
Código: Seleccionar todo
While 1
(tu código)
Sleep(5000)
WEnd
Re: Encontrar ventanas con expresiones regulares
En vez de MsgBox().
Usa la función ToolTip(). Búscalo en la ayuda es muy fácil de usar.
Usa la función ToolTip(). Búscalo en la ayuda es muy fácil de usar.
Re: Encontrar ventanas con expresiones regulares
Ya he conseguido buscar las ventanas y entender que con esta expresion:
Consigues un dato que lo puedes utilizar para otros propositos.
Ya consigo utilizar este numero, pero no consigo que se actualice. Mi idea es que cuente las ventanas abiertas y se actualice si abro una nueva ventana con esas caracteristicas., ¿Alguien que me abra los ojos?
Desde ya muchas gracias.
Código: Seleccionar todo
Local $Ventanas = WinList ("[REGEXPTITLE:Bloc]")
Ya consigo utilizar este numero, pero no consigo que se actualice. Mi idea es que cuente las ventanas abiertas y se actualice si abro una nueva ventana con esas caracteristicas., ¿Alguien que me abra los ojos?
Desde ya muchas gracias.
Código: Seleccionar todo
#include <GUIConstants.au3>
Local $Ventanas = WinList ("[REGEXPTITLE:Bloc]")
GUICreate("Contador y colocador de ventanas", 400, 300)
GUICtrlCreateLabel ("Ventanas Abiertas = "& $Ventanas [0][0], 30, 10)
GUISetState(@SW_SHOW)
While 2
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE ;evento del sistema
MsgBox(0, "Cerrando Aplicación", "Está usted cerrando la aplicación.....Cerrando")
ExitLoop
EndSelect
WEnd
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Encontrar ventanas con expresiones regulares
Ya te dijo jamaro en un par de post más arriba lo que debías de hacer para que se fuese comprobando cada cierto tiempo. Leetelo otra vez, y si no entiendes algo pregunta.gvshol escribió:Ya consigo utilizar este numero, pero no consigo que se actualice. Mi idea es que cuente las ventanas abiertas y se actualice si abro una nueva ventana con esas caracteristicas., ¿Alguien que me abra los ojos?
Otra posibilidad si no quieres parar el script un determinado tiempo, es meter el código que contabiliza las ventanas en una función y llamarla cada cierto tiempo con adlibregister. Para más información, mírala en la ayuda que la explica mejor que yo .
Saludos y más atención a lo que te responden los compas........que encima que se molestan.......
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: Encontrar ventanas con expresiones regulares
He hecho esto que me han dicho y buscado informacion acerca de adlibregister pero no soy capaz.
He metido dentro del While... Wend el resultado de Winlist sin resultados.
He metido dentro del while... el GUI y lo mismo.
es por esto que pregunto, porque si ejecuto el script cuenta las ventanas que estan en marcha, pero si cierro o abro ventanas no actualiza la cuenta.
He metido dentro del While... Wend el resultado de Winlist sin resultados.
He metido dentro del while... el GUI y lo mismo.
es por esto que pregunto, porque si ejecuto el script cuenta las ventanas que estan en marcha, pero si cierro o abro ventanas no actualiza la cuenta.
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Encontrar ventanas con expresiones regulares
Es que lo que tienes que meter en el bloque while.......wend no es el resultado de las ventanas encontradas (el resultado siempre será el mismo) sino la función winlist para que te la vaya ejecutando cada cierto tiempo y vaya actualizando los resultados. Ejemplo con adlibregister:
He puesto que adlibregister llame a la función cada medio segundo. Puedes varias este valor y aumentarle el tiempo si no necesitas esa velocidad.
Mira los cambios que he hecho y analizados.
Saludos.
Código: Seleccionar todo
#include <GUIConstants.au3>
Local $Ventanas = WinList ("[REGEXPTITLE:Bloc]")
GUICreate("Contador y colocador de ventanas", 400, 300)
$lbVentanasAbiertas=GUICtrlCreateLabel ("Ventanas Abiertas = "& $Ventanas [0][0], 30, 10)
GUISetState(@SW_SHOW)
AdlibRegister("VentanasAbiertas",500) ;se ejecuta cada medio segundo.
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE ;evento del sistema
MsgBox(0, "Cerrando Aplicación", "Está usted cerrando la aplicación.....Cerrando")
ExitLoop
EndSelect
WEnd
Func VentanasAbiertas()
$Ventanas = WinList ("[REGEXPTITLE:Bloc]")
GUICtrlSetData($lbVentanasAbiertas,"Ventanas Abiertas = "& $Ventanas [0][0])
EndFunc
Mira los cambios que he hecho y analizados.
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: Encontrar ventanas con expresiones regulares
Muchas gracias por la ayuda.
Voy a ver detenidamente los cambio y a ver si soy capaz de comprenderlos. Para cuando lo asimile, expongo aqui que hace cada linea y asi me podeis corregir.
Me reitero, muchas gracias.
Voy a ver detenidamente los cambio y a ver si soy capaz de comprenderlos. Para cuando lo asimile, expongo aqui que hace cada linea y asi me podeis corregir.
Me reitero, muchas gracias.
Re: Encontrar ventanas con expresiones regulares
Perdon por los errores que escriba a continuacion, pero creo que ya comprendo algo mas de AutoIt, todo un logro para mi.
En este primer cambio que me indicas, entiendo que lo que haces es crear un arreglo para que nos devuelva el resultado del arreglo $Ventanas dentro del WUI.
Con esta funcion entiendo que lo que hacemos es contar ventanas en la primera linea y en la segunda le decimos que hacer con el numero, en este caso que lo imprima en el GUI.
Esta ultima ha sido la mas sencilla. Con esta funcion, entiendo que puedo hacer que las funciones se refresquen con el margen que yo quiera.
Muchas muchas gracias, de verdad. Ahora toca seguir mirando cosas y tratar de aprender.
Código: Seleccionar todo
$lbVentanasAbiertas = GUICtrlCreateLabel ("Ventanas Abiertas = "& $Ventanas [0][0], 30, 10)
Código: Seleccionar todo
Func VentanasAbiertas()
$Ventanas = WinList ("[REGEXPTITLE:Bloc]")
GUICtrlSetData($lbVentanasAbiertas,"Ventanas Abiertas = "& $Ventanas [0][0])
EndFunc
Código: Seleccionar todo
AdlibRegister("VentanasAbiertas",500)
Muchas muchas gracias, de verdad. Ahora toca seguir mirando cosas y tratar de aprender.