Página 1 de 1

OBTENER DIRECCION DE LISTA

Publicado: 28 Jun 2013, 02:04
por yasmany
Hola, buenas noches a todos,
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.
Imagen
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

Re: OBTENER DIRECCION DE LISTA

Publicado: 28 Jun 2013, 21:18
por yasmany
Por cierto, ¿como podria poner una condicion que tome en cuenta lo que diga la columna 2 y presente un mensaje.

Me explico

Al presionar [Obtener]
Me salga un mensaje dandome la direccion de cada fila de la columna 1(Deteccion) QUE TIENE seleccionado el CHECKBOX y tambien
me diga Lo que tiene respectivamente en la comlumna 2 (Tipo).

Ejemplo basado en la imagen de la pantalla

Mensaje 1
"E:\Carpetas" es un "Directorio"

Mensaje 2
"E:\con" es un "Directorio"
y asi varios mesajes.

Quiero aclarar que luego ya verficare cuando sea un archivo de acuerdo a su extencion
No sé como explicar ... pero quisiera que me ayuden en obtener esos mensajes basados en las columnas y filas al momento de presiona [Obtener] debe darme todos los mensajes respectivamente por cada item que esta en la lista.
Me he matado craneando y ya llevo dos días, y me he puesto a diseñar la interfaz, algunas imagenes para agregar.
¿Podría alguien ayudarme? sería de Gran ayuda

Dejo de nuevo el Código, pero esta vez mas pequeño, le quite algunas cosas para hacerlo mas entendible.

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 $btnDesinfectar, $unidad, $Checkbox1, $ed
Dim $aArray[21], $Array[4]

; GUI
$interfaz = GUICreate("Avy", 620, 405, -1, -1, -1, $ws_ex_acceptfiles)

;BOTONES
$btnObtener = GUICtrlCreateButton("&Escanear", 369, 355, 60, 25)
$btnDesinfectar = 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 $btnObtener
			Clic_Obtener()

		Case $btnDesinfectar
			Clic_Desinfectar()
		Case $btnSalir
			Exit
	EndSwitch

WEnd

;FUNCION COMBO
Func Clic_combo()

	If GUICtrlRead($Combo1) = "Seleccione la unidad" Then

	Else
		valordefinido()
	EndIf

EndFunc   ;==>Clic_combo

;FUNCION DESINFECTAR
Func Clic_Desinfectar()
	$valor = GUICtrlRead($lista)
	MsgBox(-1, "message", "" & $valor)

EndFunc   ;==>Clic_Desinfectar

Func Clic_Obtener()

	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 Obtener
			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

				GUICtrlCreateListViewItem($unidad & "\" & $file & "|Directorio|Estable", $lista)
				GUICtrlSetState(-1, $GUI_CHECKED);checkeo en la lista
				$icono = $unidad & "\" & $file
				GUICtrlSetImage(-1, "" & $icono, 1, 1) ; ubicar imagen
				;GUICtrlSetImage(-1, "shell32.dll", 12) ; ubicar imagen

				bajar(); PARA UBICARSE 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_Obtener

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]
			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")
	ElseIf StringInStr($var, "INVALID") Then
		MsgBox(48, "	Aviso", "La unidad no está disponible")
	Else
		$ed = 1
	EndIf
EndFunc   ;==>unidadPrincipal

Func verificacionUnidad()
	If GUICtrlRead($Combo1) = "Seleccione la unidad" Then
		MsgBox(48, "	Aviso", "Unidad no seleccionada")
	Else
		valordefinido()
		$ed = "1"
	EndIf
EndFunc   ;==>verificacionUnidad


Re: OBTENER DIRECCION DE LISTA

Publicado: 30 Jun 2013, 21:24
por Dany
Ve si esto es lo que necesitas.

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 $btnDesinfectar, $unidad, $Checkbox1, $ed
Dim $aArray[21], $Array[4]

; GUI
$interfaz = GUICreate("Avy", 620, 405, -1, -1, -1, $ws_ex_acceptfiles)

;BOTONES
$btnObtener = GUICtrlCreateButton("&Escanear", 369, 355, 60, 25)
$btnDesinfectar = 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 $btnObtener
         Clic_Obtener()

      Case $btnDesinfectar
         Clic_Desinfectar()
      Case $btnSalir
         Exit
   EndSwitch

WEnd

;FUNCION COMBO
Func Clic_combo()

   If GUICtrlRead($Combo1) = "Seleccione la unidad" Then

   Else
      valordefinido()
   EndIf

EndFunc   ;==>Clic_combo

;FUNCION DESINFECTAR
Func Clic_Desinfectar()
   $valor = GUICtrlRead($lista)
   MsgBox(-1, "message", "" & $valor)


Local $hListView = GUICtrlGetHandle($Lista)

   $posicion=_GUICtrlListView_GetSelectionMark($hListView)
   $check=_GUICtrlListView_GetItemChecked($hListView,$posicion)
   $deteccion=_GUICtrlListView_GetItemText($hListView,$posicion)
   $tipo=_GUICtrlListView_GetItemText($hListView,$posicion,1)

MsgBox(0,"",$posicion & @CRLF & $check & @CRLF & $deteccion & @CRLF & $tipo)

EndFunc   ;==>Clic_Desinfectar

Func Clic_Obtener()

   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 Obtener
         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

            GUICtrlCreateListViewItem($unidad & "\" & $file & "|Directorio|Estable", $lista)
            GUICtrlSetState(-1, $GUI_CHECKED);checkeo en la lista
            $icono = $unidad & "\" & $file
            GUICtrlSetImage(-1, "" & $icono, 1, 1) ; ubicar imagen
            ;GUICtrlSetImage(-1, "shell32.dll", 12) ; ubicar imagen

            bajar(); PARA UBICARSE 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_Obtener

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]
         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")
   ElseIf StringInStr($var, "INVALID") Then
      MsgBox(48, "   Aviso", "La unidad no está disponible")
   Else
      $ed = 1
   EndIf
EndFunc   ;==>unidadPrincipal

Func verificacionUnidad()
   If GUICtrlRead($Combo1) = "Seleccione la unidad" Then
      MsgBox(48, "   Aviso", "Unidad no seleccionada")
   Else
      valordefinido()
      $ed = "1"
   EndIf
EndFunc   ;==>verificacionUnidad
Recuerdas que debes definir el Handle.

Código: Seleccionar todo

global $hListView = GUICtrlGetHandle($Lista)
Y para lo demas:

Código: Seleccionar todo

$posicion=_GUICtrlListView_GetSelectionMark($hListView)
   $check=_GUICtrlListView_GetItemChecked($hListView,$posicion)
   $deteccion=_GUICtrlListView_GetItemText($hListView,$posicion)
   $tipo=_GUICtrlListView_GetItemText($hListView,$posicion,1)

MsgBox(0,"",$posicion & @CRLF & $check & @CRLF & $deteccion & @CRLF & $tipo)
Salu2.