Hola carnales he corregido el pequeño programa pues me he dado cuenta q lanzaba un mensaje q no deberia aparecer en ese momento y tambien el contenido del list no se quitaba cuando seleccionaba la frase "Seleccione la unidad" pero ya esta resuelto
Código: Seleccionar todo
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=folder.ico
#AutoIt3Wrapper_Outfile=Show_AND_Hide_Files.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Res_Comment=Software gratuito [email protected]
#AutoIt3Wrapper_Res_Description=Desocultador de archivos y carpetas
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Yasmany Curimilma
#AutoIt3Wrapper_Res_Language=1034
#Obfuscator_Parameters=/striponly
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
FileInstall("12.jpg", @TempDir & "\", 1)
Global $unidad
$GUI = GUICreate("Hide and Show", 250, 370, -1, -1)
GUISetBkColor(0xFFFFFF)
GUICtrlCreatePic(@TempDir & "\12.jpg", 0, 0, 250, 50)
$desocultar = GUICtrlCreateButton("Desocultar", 175, 335, 70, 30)
$ocultar = GUICtrlCreateButton("Ocultar", 105, 335, 70, 30)
$combo = GUICtrlCreateCombo("Seleccione la unidad", 10, 60, 230, -1, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_UPPERCASE)) ;#include <ComboConstants.au3>
obtenerUnidades()
$lista = GUICtrlCreateList("", 10, 85, 230, 210)
GUICtrlSetColor(-1, 0x666666)
GUISetState()
$ch_SelectAll = GUICtrlCreateCheckbox("Realizar accion para toda la lista", 10, 290, 240, 16)
$ch_mostrarTodos = GUICtrlCreateCheckbox("Mostrar todos los archivos", 10, 310, 240, 16)
GUICtrlCreateLabel("By: YMCT", 12, 345, 80, 50)
GUICtrlSetFont(-1, 9, 800, 0, "MS Serif")
GUICtrlSetState(-1, $GUI_DISABLE)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileDelete(@TempDir & "\12.jpg")
Exit
Case $combo
verOcultos()
Case $ch_mostrarTodos
AllFiles()
Case $desocultar
startShow()
Case $ocultar
startHide()
EndSwitch
WEnd
Func obtenerUnidades()
$var = DriveGetDrive("All")
If Not @error Then
For $i = 1 To $var[0]
If DriveStatus($var[$i]) <> "READY" Then
Else
GUICtrlSetData($combo, DriveGetLabel($var[$i]) & " (" & $var[$i] & ")")
EndIf
Next
EndIf
EndFunc ;==>obtenerUnidades
Func valorOut()
$comboContenido1 = StringReplace(GUICtrlRead($combo), "(", "<unidad>")
$comboContenido2 = StringReplace($comboContenido1, ")", "</unidad>")
$unidad1 = StringRegExp($comboContenido2, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
$unidad = $unidad1[0]
EndFunc ;==>valorOut
Func verOcultos()
If GUICtrlRead($ch_mostrarTodos) = $GUI_CHECKED Then
AllFiles()
Else
GUICtrlSetColor($lista, 0x666666)
GUICtrlSetData($lista, "")
If GUICtrlRead($combo) = "Seleccione la unidad" Then
GUICtrlSetState($ocultar, $GUI_DISABLE)
GUICtrlSetState($desocultar, $GUI_DISABLE)
Else
valorOut(); tomo los valores comprendidos en el item del combo
$status = DriveStatus($unidad)
If StringInStr($status, "NOREADY") Then
MsgBox(48, "Aviso", "Unidad no disponible")
ElseIf StringInStr($status, "INVALID") Then
MsgBox(48, "Aviso", "Unidad no disponible")
Else
GUICtrlSetState($ocultar, $GUI_ENABLE)
GUICtrlSetState($desocultar, $GUI_ENABLE)
$search = FileFindFirstFile($unidad & "\*.*")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
$estado = FileGetAttrib($unidad & "\" & $file)
If StringInStr($estado, "H") Then
GUICtrlSetData($lista, $unidad & "\" & $file)
EndIf
WEnd
FileClose($search)
EndIf
EndIf
EndIf
EndFunc ;==>verOcultos
Func AllFiles()
If GUICtrlRead($combo) = "Seleccione la unidad" Then
GUICtrlSetData($lista, "")
Else
valorOut()
If FileExists($unidad) Then
If GUICtrlRead($ch_mostrarTodos) = $GUI_CHECKED Then
GUICtrlSetData($lista, "")
$search = FileFindFirstFile($unidad & "\*.*")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
GUICtrlSetData($lista, $unidad & "\" & $file)
WEnd
FileClose($search)
GUICtrlSetColor($lista, 0x000000)
Else
verOcultos()
EndIf
Else
MsgBox(16, "Aviso", "La unidad no está disponible")
EndIf
EndIf
EndFunc ;==>AllFiles
Func startShow()
$verifi = GUICtrlRead($combo)
If ($verifi) = "Seleccione la unidad" Then
MsgBox(48, "Aviso", "Debe selecionar la unidad")
GUICtrlSetState($combo, $GUI_FOCUS)
Else
valorOut()
If FileExists($unidad) Then
$est = GUICtrlRead($ch_SelectAll)
If ($est) = $GUI_CHECKED Then
$search = FileFindFirstFile($unidad & "\*.*")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
FileSetAttrib($unidad & "\" & $file, "-sh")
WEnd
FileClose($search)
verOcultos()
Else
$select = GUICtrlRead($lista)
If $select == "" Then
MsgBox(48, "Aviso", "Debe seleccionar un item de la lista")
ElseIf not ($select) Then
MsgBox(48, "Aviso", "Elemento no encontrado")
Else
FileSetAttrib($select, "-raSH")
$verificar = FileGetAttrib($select)
If StringInStr($verificar, "H") Then
MsgBox(16, "Aviso", "Acceso denegado")
Else
MsgBox(64, "Aviso", "Listo", 1)
verOcultos()
EndIf
EndIf
EndIf
Else
MsgBox(48, "Aviso", "Unidad no disonible")
EndIf
EndIf
EndFunc ;==>startShow
Func startHide()
$verifi = GUICtrlRead($combo)
If ($verifi) = "Seleccione la unidad" Then
MsgBox(48, "Aviso", "Debe selecionar la unidad")
GUICtrlSetState($combo, $GUI_FOCUS)
Else
valorOut()
If FileExists($unidad) Then
$est = GUICtrlRead($ch_SelectAll)
If ($est) = $GUI_CHECKED Then
$search = FileFindFirstFile($unidad & "\*.*")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
FileSetAttrib($unidad & "\" & $file, "+sh")
WEnd
FileClose($search)
verOcultos()
Else
$select = GUICtrlRead($lista)
If $select == "" Then
MsgBox(48, "Aviso", "Debe seleccionar un item de la lista")
ElseIf not ($select) Then
MsgBox(48, "Aviso", "Elemento no encontrado")
Else
FileSetAttrib($select, "+rash")
$verificar = FileGetAttrib($select)
If StringInStr($verificar, "H") Then
MsgBox(64, "Aviso", "Listo", 1)
Else
MsgBox(16, "Aviso", "Acceso denegado")
EndIf
EndIf
EndIf
Else
MsgBox(48, "Aviso", "Unidad no disponible")
EndIf
EndIf
EndFunc ;==>startHide
Cuando retiro la memoria...EN el combo todavia me aparece esa unidad PERO CLARO si la selecciona yo le puse q cuando no este disponible me salga un mensaje..
Pero mi preguna es ¿Cómo hago para q cuando retire la unidad ;esta desaparesca de la lista del combo?