Tengo una duda, sucede que cada item de la lista tiene un cuadro de CHECKBOX pero deseo obtener todas las direcciones de la lista al presionar [Obtener], no solo la que muestro en el recuadro rojo.

aqui está el codigo
Código: Seleccionar todo
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Language=1034
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#NoTrayIcon
#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <UpdownConstants.au3>
#include <GuiTab.au3>
#include <GuiListView.au3>
#include <EditConstants.au3>
#include <GuiButton.au3>
#include <Misc.au3>
#include <GUIListBox.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <ListviewConstants.au3>
Global $btnObtener, $unidad, $Checkbox1, $ed, $ListView1, $lista
Dim $aArray[21], $Array[4]
; GUI
$interfaz = GUICreate("Avy", 620, 405, -1, -1, -1, $ws_ex_acceptfiles)
;BOTONES
$btnEscanear = GUICtrlCreateButton("&Escanear", 369, 355, 60, 25)
$btnObtener = GUICtrlCreateButton("&Obtener", 429, 355, 120, 25)
$btnSalir = GUICtrlCreateButton("&Salir", 550, 355, 60, 25)
;UNIDADES
$Combo1 = GUICtrlCreateCombo("Seleccione la unidad", 10, 60, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_UPPERCASE))
obtenerUnidades()
;REGISTRO DE SUCESOS
$tab = GUICtrlCreateTab(10, 100, 600, 250)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Registro de sucesos")
$gruposucesos = GUICtrlCreateGroup("Detalles", 15, 130, 590, 215)
$lista = GUICtrlCreateListView("Deteccion                                        |Tipo                     |Estado                            ", 18, 150, 575, 190, -1, $LVS_EX_CHECKBOXES);
;ESTADO DE LA GUI
GUISetState(@SW_SHOW)
;CASOS
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			If $nMsg = $GUI_EVENT_CLOSE Then
				Exit
			EndIf
		Case $Combo1
			Clic_combo()
		Case $btnEscanear
			Clic_Escanear()
		Case $btnObtener
			Clic_Obtener()
		Case $btnSalir
			Exit
	EndSwitch
WEnd
;FUNCION COMBO
Func Clic_combo()
	If GUICtrlRead($Combo1) = "Seleccione la unidad" Then
	Else
		valordefinido()
		$var = DriveStatus($unidad)
		If StringInStr($var, "NOTREADY") Then
			MsgBox(48, "	Aviso", "La unidad no está disponible")
		ElseIf StringInStr($var, "INVALID") Then
			MsgBox(48, "	Aviso", "La unidad no está disponible")
		EndIf
	EndIf
EndFunc   ;==>Clic_combo
;FUNCION Obtener
Func Clic_Obtener(); Deseo obtener la direccion que me muestra en la lista por ejemplo H:\carpeta o H:\archivo.extension
$valor = GUICtrlRead($Lista)
MsgBox(-1,"message",""&$valor)
EndFunc   ;==>Clic_Obtener
Func Clic_Escanear()
	If GUICtrlRead($Combo1) = "Seleccione la unidad" Then
		GUICtrlSetState($Combo1, $GUI_FOCUS); Ubico el foco donde se elige la unidad
	Else
		unidadPrincipal() ;VERIFICANDO SI LA UNIDAD ESTÁ DISPONIBLE
		If $ed == 1 Then
			$etiqueta = DriveGetLabel($unidad)
			_GUICtrlListView_DeleteAllItems($lista) ;AQUI BORRA TODO EL CONTENIDO DEL LISTVIEW POR Q VUELVE A Escanear
			GUICtrlCreateListViewItem(@HOUR & ":" & @MIN & ":" & @SEC & " Analizando... unidad ", $lista)
			GUICtrlSetColor(-1, 0x0000ff) ; azul
			GUICtrlCreateListViewItem("(" & $unidad & ") " & $etiqueta & "", $lista)
			;BUSQUEDA
			$search1 = FileFindFirstFile($unidad & "\*.*")
			While 1
				$file = FileFindNextFile($search1)
				If @error Then ExitLoop
				$ver = FileGetSize($unidad & "\" & $file) ; obtengo el tamaño
				$res = $ver / 1024
				If $res <= 266.240 Then
					GUICtrlCreateListViewItem($unidad & "\" & $file & "|Directorio|Estable", $lista)
					GUICtrlSetState(-1, $GUI_CHECKED);checkeo en la lista
				EndIf
				bajar(); PARA UBICAR EN LA ULTIMA FILA DEL LISTADO DE LA TABLA
			WEnd
			; CIERRA EL IDENTIFICADOR DE LA BUSQUEDA
			FileClose($search1)
			GUICtrlCreateListViewItem(@HOUR & ":" & @MIN & ":" & @SEC & "  Analisis Finalizado", $lista)
		EndIf
	EndIf
EndFunc   ;==>Clic_Escanear
Func bajar() ; PARA UBICAR EN LA ULTIMA FILA DEL LISTADO DE LA TABLA
	$i = _GUICtrlListView_GetItemCount($lista)
	_GUICtrlListView_ScrollItem($lista, $i)
EndFunc   ;==>bajar
Func _GUICtrlListView_ScrollItem($ListView1, $iItemIndex = -1, $fPartialOK = True, $iIncrement = 16)
	Local $iSuccess1, $iSuccess2
	If $iItemIndex = -1 Then $iItemIndex = _GUICtrlListView_GetItemCount($ListView1) - 1
	$iSuccess1 = _GUICtrlListView_Scroll($ListView1, 0, $iIncrement)
	$iSuccess2 = _GUICtrlListView_EnsureVisible($ListView1, $iItemIndex, $fPartialOK)
	Return $iSuccess1 And $iSuccess2
EndFunc   ;==>_GUICtrlListView_ScrollItem
Func obtenerUnidades() ;esta función nos recorre todos los dispositivos conectados al pc
	$var = DriveGetDrive("removable"); se alamcenan en est variable
	If Not @error Then ; si no hay error continuamos
		For $i = 1 To $var[0]
			;meto un for, es decir un bucle que irá desde el valor 0 hasta $var[0], que es el número max de dispositivos que hay
			;si suponemos que tenemos un total de 10 dispositivos, $var[0] valdrá 10
			If DriveStatus($var[$i]) <> "READY" Then ; soluciona  tu error, si el dispositivo no está listo, no lo muestra, así se acelera todo
			Else
				GUICtrlSetData($Combo1, DriveGetLabel($var[$i]) & " (" & $var[$i] & ")")
			EndIf
		Next
	EndIf
EndFunc   ;==>obtenerUnidades
Func valordefinido()
	$contenidocombo1 = StringReplace(GUICtrlRead($Combo1), " (", "<unidad>")
	$contenidocombo = StringReplace($contenidocombo1, ")", "</unidad>")
	$unidad1 = StringRegExp($contenidocombo, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
	$unidad = $unidad1[0]
EndFunc   ;==>valordefinido
Func unidadPrincipal()
	valordefinido()
	$var = DriveStatus($unidad)
	If StringInStr($var, "NOTREADY") Then
		MsgBox(48, "	Aviso", "La unidad no está disponible")
		Actualizar()
	ElseIf StringInStr($var, "INVALID") Then
		MsgBox(48, "	Aviso", "La unidad no está disponible")
		Actualizar()
	Else
		$ed = 1
	EndIf
EndFunc   ;==>unidadPrincipal
Func Actualizar() ; esto aun no funciona
	GUICtrlSetData($Combo1, "")
	GUICtrlSetData($Combo1, "SELECCIONE LA UNIDAD")
	obtenerUnidades();
EndFunc   ;==>Actualizar
Func verificacionUnidad()
	If GUICtrlRead($Combo1) = "Seleccione la unidad" Then
		MsgBox(48, "	Aviso", "Unidad no seleccionada")
	Else
		valordefinido()
		$var = DriveStatus($unidad)
		If StringInStr($var, "NOTREADY") Then
			MsgBox(48, "	Aviso", "La unidad no está disponible")
		ElseIf StringInStr($var, "INVALID") Then
			MsgBox(48, "	Aviso", "La unidad no está disponible")
		Else
			$ed = "1"
		EndIf
	EndIf
EndFunc   ;==>verificacionUnidad



