Función WinList ()

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
joaquin
Aprendiz de Mago
Mensajes: 48
Registrado: 04 Jun 2008, 22:31
Ubicación: Barcelona, España

Función WinList ()

Mensaje por joaquin »

He intentado utilizar la funcion WinList () para obtener un listado de las ventanas activas y visibles al correr un script.
He utilizado el code del ejemplo de la ayuda y me da el listado correcto de las ventanas pero lo muestra una a una en cada msgbox. Me interesa que dé el listado en un sólo msgbox. Intenté resolver con la función _ArrayToClip, pero no funciona.
Agradecería aportaciones al tema...

Código: Seleccionar todo

   
#include <Array.au3>
$var = WinList()

For $i = 1 to $var[0][0]
  ; Solo muestra las ventanas visibles que tienen títulos
  If $var[$i][0] <> "" AND $var[$i][0] <> "Program Manager" AND IsVisible($var[$i][1]) Then
     _ArrayToClip($var,$i=1, $i=10)
  EndIf
Next
MsgBox(0, "_ArrayToClip() Test", ClipGet())

Func IsVisible($handle)
  If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
  Else
    Return 0
  EndIf
EndFunc
 
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

Re: Función WinList ()

Mensaje por gna08 »

Bueno algo rápido que se me ocurre ya que estoy en el móvil, es almacenar las variables en otra, y en cada vuelta, ir agregando a una lista, esta echo casi a mano alzada, Jajaja, asik lo vas a tener que probar vos, creo que esta la función, _arraytostring() que haría esto pero el tema es que se te complica con el tipo de matriz que devuelve la función winlist asik proba esto y decime si te sirve.

Código: Seleccionar todo

   
#include 
global $lista
$var = WinList()
For $i = 1 to $var[0][0]
  ; Solo muestra las ventanas visibles que tienen títulos
  If $var[$i][0] <> "" AND $var[$i][0] <> "Program Manager" AND IsVisible($var[$i][1]) Then
     $lista &= $var[$i][0] & @crlf
  EndIf
Next

msgbox(0, "", $lista)

Func IsVisible($handle)
  If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
  Else
    Return 0
  EndIf
EndFunc
 
técnicamente debería de funcionar y si no, es xq me comí algo q aca no puedo probar.
espero tú respuesta y saludos.
Aunk no m Buskes, Seguro m enkontras!
joaquin
Aprendiz de Mago
Mensajes: 48
Registrado: 04 Jun 2008, 22:31
Ubicación: Barcelona, España

Re: Función WinList ()

Mensaje por joaquin »

Bueno, muchas gracias gna08, con la línea que agregaste se solucionó; funciona perfectamente y es justo lo que necesitaba: un msgbox con el listado. Me estaba complicando innecesariamente con UDF's.....naaaaa!!

:smt023
Saludos
Responder