He realizado una ventanita con un comboBox y un boton salir, en el combo se muestran todas las unidades extraibles disponibles
Pero no resulta que no se como hacer para que se auto actualice el combo, eliminando de la lista los dispositivos no disponibles y poniendo los nuevos dispositivos introducidos pero manteniendo el item actual seleccionado.
Código: Seleccionar todo
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=icono.ico
#AutoIt3Wrapper_Outfile=Avy.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=Software gratuito [email protected]
#AutoIt3Wrapper_Res_Description=Avy
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Yasmany Curimilma
#AutoIt3Wrapper_Res_Language=1034
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#NoTrayIcon
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <EditConstants.au3>
#include <GuiButton.au3>
#include <Misc.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <ListviewConstants.au3>
_Singleton("AVY1991") ; NO REPETIR INSTANCIA DE EJECUCION junto con  #include <Misc.au3>
Global $btnDesinfectar, $unidad, $ed
; GUI
$interfaz = GUICreate("Avy", 250, 140, -1, -1, -1, $ws_ex_acceptfiles)
;BOTONES
$btnSalir = GUICtrlCreateButton("&Salir", 95, 100, 60, 25)
GUICtrlSetTip(-1, "Cerrar programa")
$cbUnidades = GUICtrlCreateCombo("BUSCAR UNIDAD...", 25, 30, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_UPPERCASE))
obtenerUnidades()
GUICtrlSetState($cbUnidades, $GUI_FOCUS)
;*******************************************************************************************
;ESTADO DE LA GUI
GUISetState(@SW_SHOW)
;CASOS
While 1
	$nMsg = GUIGetMsg()
	Actualizar(); lo llamo para que se me ejecute, pero me parpadea demaciado
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			If $nMsg = $GUI_EVENT_CLOSE Then
				Exit
			EndIf
		Case $btnSalir
			Exit
	EndSwitch
WEnd
Func Actualizar()
	$res = GUICtrlRead($cbUnidades)
	GUICtrlSetData($cbUnidades, $res)
	obtenerUnidades();
	GUICtrlSetData($cbUnidades, "BUSCAR UNIDAD...")
EndFunc   ;==>Actualizar
Func obtenerUnidades()
	$res = GUICtrlRead($cbUnidades)
	GUICtrlSetData($cbUnidades, $res)
	;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]
;~ 			GUICtrlSetData($cbUnidades, DriveGetLabel($var[$i]) & "(" & $var[$i] & ")" & "Tipo: " & DriveGetType($var[$i])) ;lo he omitido
			;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  el error, si el dispositivo no está listo, no lo muestra, así se acelera todo
			Else
				GUICtrlSetData($cbUnidades, DriveGetLabel($var[$i]) & " (" & $var[$i] & ")")
			EndIf
		Next
	EndIf
EndFunc   ;==>obtenerUnidades
Func valordefinido()
	$contenidocombo1 = StringReplace(GUICtrlRead($cbUnidades), " (", "<unidad>")
	$contenidocombo = StringReplace($contenidocombo1, ")", "</unidad>")
	$unidad1 = StringRegExp($contenidocombo, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
	$unidad = $unidad1[0]
EndFunc   ;==>valordefinido