Consiste en una pequeña ventana con un combo en el cual contiene las unidades extraibles de la PC y un botón como ejemplo.
Funcionalidad: Cada vez que introduzcamos una unidad extraible esta se agregará al combo y en caso de que haya sido expulsada la flash/PenDrive se eliminará del combo deshabilitando el botón.
Es un ejemplo prácticamente sencillo para algunos, pero me ha dado dolor de cabeza realizarlo, pero gustosamente lo comparto para que se puedan guiar aquellos que inician con autoit al igual que yo y lo puedan utilizar/modificar, existen algunas otras formas de hacer lo mencionado, pero esto se me ha hecho mas entendible leyendo la descripción de algunos códigos en algunos foros en Ingles.
Cabe agradecer que también me he basado en la ayuda que muy buenamente me han brindado en este enlace hace casi un año. juantxo y Chefito
http://www.emesn.com/autoitforum/viewto ... des#p15366
Codigo: Si existe alguna sugerencia al respecto, la acepto gracias
Código: Seleccionar todo
#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 <StaticConstants.au3>
Global $unidad, $cbUnidades, $sText, $resultado, $var, $val
$interfaz = GUICreate("Actualizar combo", 250, 140, -1, -1)
$btnObtenerUnidad = GUICtrlCreateButton("Obtener Unidad", 95, 100, 80, 25)
$cbUnidades = GUICtrlCreateCombo("BUSCAR UNIDAD...", 25, 15, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_UPPERCASE))
GUISetState(@SW_SHOW)
While 1
actualizarComboDeUnidades()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
If $nMsg = $GUI_EVENT_CLOSE Then
Exit
EndIf
Case $btnObtenerUnidad
obtenerLetraDeUnidad()
EndSwitch
WEnd
Func actualizarComboDeUnidades()
Local $i, $var, $dato, $count, $val
For $i = 0 To _GUICtrlComboBox_GetCount($cbUnidades) - 1
$dato = _GUICtrlComboBox_GetLBText($cbUnidades, $i, $sText)
If $sText <> "BUSCAR UNIDAD..." Then
valordefinido()
If DriveStatus($unidad) <> "READY" Then
If GUICtrlRead($cbUnidades) = $sText Then
GUICtrlSetState($btnObtenerUnidad, $GUI_DISABLE)
_GUICtrlComboBox_DeleteString($cbUnidades, $i)
deshabilitarEncerar()
Else
_GUICtrlComboBox_DeleteString($cbUnidades, $i)
EndIf
EndIf
EndIf
$val = DriveGetDrive("removable")
If Not @error Then
For $count = 1 To $val[0]
If DriveStatus($val[$count]) <> "READY" Then
Else
$resultado = StringUpper(DriveGetLabel($val[$count]) & "(" & $val[$count] & ")")
If _GUICtrlComboBox_FindStringExact($cbUnidades, $resultado) = "-1" Then
_GUICtrlComboBox_AddString($cbUnidades, $resultado)
EndIf
EndIf
Next
EndIf
Next
EndFunc ;==>actualizarComboDeUnidades
Func deshabilitarEncerar()
GUICtrlSetData($cbUnidades, "BUSCAR UNIDAD...")
GUICtrlSetState($btnObtenerUnidad, $GUI_DISABLE)
EndFunc ;==>deshabilitarEncerar
Func valordefinido()
$contenidocombo1 = StringReplace($sText, "(", "<unidad>")
$contenidocombo = StringReplace($contenidocombo1, ")", "</unidad>")
$unidad1 = StringRegExp($contenidocombo, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
$unidad = $unidad1[0]
EndFunc ;==>valordefinido
Func obtenerLetraDeUnidad()
If GUICtrlRead($cbUnidades) <> "BUSCAR UNIDAD..." Then
$contenidocombo = StringReplace(GUICtrlRead($cbUnidades), "(", "<unidad>")
$contenidocombo = StringReplace($contenidocombo, ")", "</unidad>")
$unidad = StringRegExp($contenidocombo, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
$unidad = $unidad[0]
MsgBox(64, "Mensaje", "La unidad es " & $unidad)
EndIf
EndFunc ;==>obtenerLetraDeUnidad