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