Hola a todos. Necesito ayuda en el script que estoy haciendo.
El script es para configurar varias opciones de Windows XP, como por ejemplo, activar el firewall o en "opciones de carpeta" del explorador seleccionar las opciones "ocultar las extensiones de archivos para tipos de archivos conocidos" o "mostrar todos los archivos ocultos", etc.
Conseguí que mi script abriera cada una de las ventanas del panel de control en donde se encuentran esas opciones pero tengo problemas con los Listview y los treeview. Puedo ver cada nodo del treeview y seleccionarlo pero no puedo saber si esta checkeado o no.
Intenté con esto:
$EstaCheckeado = ControlTreeView("Opciones de carpeta", "Tree1", "[CLASS:SysTreeView32; INSTANCE:1]", "IsChecked", "#0|#12")
pero siempre obtengo -1 independientemente de si esta checkeado o no.
Tampoco funciona el comando para checkearlo:
ControlTreeView("Opciones de carpeta", "Tree1", "[CLASS:SysTreeView32; INSTANCE:1]", "Check", "#0|#12")
Y no me sirve enviarle la tecla "SPACE" porque primero tengo que saber si esta checkeado o no.
Desde ya muchas gracias.
manejo de ListView y TreeView
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: manejo de ListView y TreeView
Mmmmm.....parece ser que no son controles checkbox y radio button. Me he dado cuenta que son imágenes.
Si vas a trabajar con un control treeview mira en la ayuda las funciones UDFs, en User Defined Function>GuiTreeView Management. Mira todas esas funciones que te facilitará las cosas.
Te pongo un pequeño ejemplo que te indica cuando está marcada y señalada una opción. Como ya te dije antes son imágenes, y como tales la función _GUICtrlTreeView_GetImageIndex te devuelve su índice.
Debes tener abierta la ventana "Opciones de carpeta" para que el script se ejecute.
Si quieres comprobar un item específico puedes utilizar _GUICtrlTreeView_FindItem para saber el handle de este item. Lo comprueba pasándole el texto del item como parámetro.
También puedes comprobar estos valores mirando en el registro de windows, que es ahí donde se guardan estos datos. Yo creo que sería lo más correcto.
Saludos.
Si vas a trabajar con un control treeview mira en la ayuda las funciones UDFs, en User Defined Function>GuiTreeView Management. Mira todas esas funciones que te facilitará las cosas.
Te pongo un pequeño ejemplo que te indica cuando está marcada y señalada una opción. Como ya te dije antes son imágenes, y como tales la función _GUICtrlTreeView_GetImageIndex te devuelve su índice.
Debes tener abierta la ventana "Opciones de carpeta" para que el script se ejecute.
Código: Seleccionar todo
#Include <GuiTreeView.au3>
If WinExists("Opciones de carpeta") Then
$cont=0
$hTreeView = ControlGetHandle("Opciones de carpeta", "", "[CLASS:SysTreeView32; INSTANCE:1]")
$hItem=_GUICtrlTreeView_GetFirstItem($hTreeView) ;obtengo el primer item.
While _GUICtrlTreeView_GetCount($hTreeView)>$cont
$textItem=_GUICtrlTreeView_GetText($hTreeView,$hItem) ;obtengo el texto del item.
$checked=_GUICtrlTreeView_GetImageIndex($hTreeView,$hItem) ;averiguo el índice de la imagen.
Switch $checked
Case 0 ;valor de imagen "marcado"
MsgBox(0,"marcado (checkbox)",$cont &" - "&$textItem &" - marcado")
Case 1 ;valor de imagen "no marcado"
MsgBox(0,"no marcado (checkbox)",$cont &" - "&$textItem &" - no marcado")
Case 2 ;valor de imagen "Señalado"
MsgBox(0,"Señalado (radio button)",$cont &" - "&$textItem &" - Señalado")
Case 3 ;valor de imagen "No señalado"
MsgBox(0,"No señalado (radio button)",$cont &" - "&$textItem &" - No señalado")
EndSwitch
$hItem=_GUICtrlTreeView_GetNext($hTreeView,$hItem) ;me muevo al siguiente item.
$cont+=1
WEnd
Else
MsgBox(0,"Error","No está abierta Opciones de carpeta. Debes abrirla para que funcione el script.")
EndIf
También puedes comprobar estos valores mirando en el registro de windows, que es ahí donde se guardan estos datos. Yo creo que sería lo más correcto.
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 ;).
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: manejo de ListView y TreeView
Una duda, ¿cómo sabes el estado de la opción según el índice de la imagen? Es decir, que si tiene índice 0 es un checkbox marcado, si es 2 es un radiobutton señalado...
¿Ensayo y error o siempre se sigue ese esquema? Es que si hay que mirar en cada TreeView (o similar) de opciones qué indices de imagen corresponden con qué estados puede ser una pesadilla...
En ese caso casi mejor olvidarse de todo eso y como dices mejor mirar directamente en el registro de windows...
¿Ensayo y error o siempre se sigue ese esquema? Es que si hay que mirar en cada TreeView (o similar) de opciones qué indices de imagen corresponden con qué estados puede ser una pesadilla...
En ese caso casi mejor olvidarse de todo eso y como dices mejor mirar directamente en el registro de windows...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: manejo de ListView y TreeView
La verdad? Ensayo y error .
Pero me imagino que como son índices de imágenes de win, siempre serán los mismos para estas imágenes (checkboxes, radio buttons (activados y desactivados), carpeta, archivos, etc). Sobre todo si son cosas del propio S.O.
No creo que haya ningún problema con esto. Seguro que al ser algo que lleva el win esté bastante estandarizado.....digo yo .
Y respecto a que es mejor utilizar el registro de win para esto....como ya dije anteriormente, estoy contigo de que sí.
Saludos.
Pero me imagino que como son índices de imágenes de win, siempre serán los mismos para estas imágenes (checkboxes, radio buttons (activados y desactivados), carpeta, archivos, etc). Sobre todo si son cosas del propio S.O.
No creo que haya ningún problema con esto. Seguro que al ser algo que lleva el win esté bastante estandarizado.....digo yo .
Y respecto a que es mejor utilizar el registro de win para esto....como ya dije anteriormente, estoy contigo de que sí.
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 ;).
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: manejo de ListView y TreeView
Se podría asumir que está estandarizado si fueran índices de un almacén global de imágines, pero entiendo que cada TreeView de estos almacena sus propias imágenes con sus índices propios (supongo). En ese caso hay que mirar cada uno qué imágenes ha almacenado y con qué índices. Aunque sí haya una especie de norma y por ejemplo los activados vayan antes de los desactivados, los checkbox antes de los radiobutton... cada treeview o listview será un mundo y habrá que investigarlo específicamente.
vicfrod, mejor vas buscando esas opciones en el registro
vicfrod, mejor vas buscando esas opciones en el registro
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)