Página 1 de 1

Analizando ejemplos.

Publicado: 13 Sep 2012, 19:36
por gvshol
En la ayuda, en la Funcion WinList tenemos el siguiente codigo:

Código: Seleccionar todo

$var = WinList()

For $i = 1 to $var[0][0]
  ; Solo muestra las ventanas visibles que tienen títulos
  If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
    MsgBox(0, "Detalles", "Títulos=" & $var[$i][0] & @LF & "Identificador=" & $var[$i][1])
  EndIf
Next

Func IsVisible($handle)
  If BitAnd( WinGetState($handle), 2 ) Then 
    Return 1
  Else
    Return 0
  EndIf

EndFunc
Supongo que voy a hacer preguntas muy simples y de novato, pero me gustaria empezar por el principio y con buen pie.

$var WinList() nos da un resultado, mas concretamente, un listado de ventanas, creo que esto lo entiendo bien.

For $i = 1 to $var[0][0] ¿Alguien podria explicarme que significa esto?

Antes de sacar conclusiones, debo decir en mi defensa que jamas he programado nada y que parto absolutamente de 0.

Muchas gracias por la ayuda.

Re: Analizando ejemplos.

Publicado: 15 Sep 2012, 11:02
por jamaro
Hola gvshol:

En la ayuda de Winlist te indica que la función te devuelve una matriz donde:

$var[0][0] = número de ventanas
$var[X][0] = título de la ventana X
$var[X][1] = handle (HWND) de la ventana X

Con la función For ... Next haces un bucle.

En el ejemplo: For $i = 1 to $var[0][0], indicas que se repita el bucle dándole un valor a la variable $i que vaya desde 1 hasta el número de ventanas.
Dentro de la función puedes utilizar $i. En este caso, $i es como la X que puse arriba. La primera vez tiene el valor 1 ($i=1) y se hace todo lo que está dentro del For .. Next. Al llegar al Next, vuelve al principio del For, pero se añade 1 a $i, con lo que en esta segunda pasada, $i=2,... y así sucesivamente.

La función For la puedes utilizar con Step para que el salto no sea de uno en uno, sino otro valor.

No sé cómo te manejas con el inglés del manual, pero por si acaso, te comento que también tienes el archivo de ayuda en español (al menos yo tengo el de Autoit v3.3.6.0)

¡Saludos!