#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.10.2 Author: wbueso Script Function: Ejemplo de la utilizacion de ficheros ini en Instalador WBD. #ce ---------------------------------------------------------------------------- #include #include #include #include #include ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;::::;Sugerencia;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Declara tus Variables Globales y constantes al principio ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Global $AncG = 133, $GrsG = 280, $PosI1 = 143, $PosI2 = 283, $PosI3 = 423, $PosI4 = 563, $PosA1 = 5, $PosA2 = 295 Global $ColorG = 0x6699FF, $TamFG = 10, $GrsFG = 600, $AtrbFG = 1, $FontG = "Time New Rodman" Global Const $aDias[7] = ["Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"] ;array para los dias Global Const $aMes[12] = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Crea la GUI (Ventana) GUICreate("Agregar Programas", 700, 580, 200, 100) GUICtrlSetDefBkColor(0x6699FF) GUICtrlCreatePic(@ScriptDir & "\oemlogo.bmp", 2, 2, 142, 98, $WS_DLGFRAME) ;Crea la Informacion GUICtrlCreateLabel("Haga Clic en cualquiera de los botones para agregar los programas al menú.", 5, 102, 138, 84, $WS_DLGFRAME) $So = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName") $SP = @OSServicePack $OA = @OSArch If $OA = "X86" Then $OA = "32 Bits" Else $OA = "64 Bits" EndIf GUICtrlCreateLabel("Info General:" & @CRLF & "Sistema Op:" & @CRLF & $So & @CRLF & $SP & @CRLF & "Arquitectura de: " & $OA, 5, 188, 138, 73, $WS_DLGFRAME) $User = @UserName $Org = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "RegisteredOrganization") $NPc = @ComputerName $IP = @IPAddress1 $Mem = MemGetStats() $CPU = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString") GUICtrlCreateLabel("Usuario: " & $User & @CRLF & "Organización:" & @CRLF & $Org & @CRLF & "Nombre en RED:" & @CRLF & $NPc & _ @CRLF & "IP: " & $IP & @CRLF & $CPU & @CRLF & "Memoria Total:" & @CRLF & $Mem[1] & " KB", 5, 263, 138, 139, $WS_DLGFRAME) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;; ;;;;;Esta parte te la habia editado dany en el Instalador;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::; $Dia = @WDAY $Dia = $aDias[$Dia - 1] $Fch = @MDAY $Mes = $aMes[@MON - 1] $Yr = @YEAR $Hr = @HOUR $AP = $Hr If $AP >= 13 Then $AP = "PM" Else $AP = "AM" EndIf ; Aqui otra forma para evitar toda esa comparación. solo comparas que este entre 13 y 24 y restas 12 :) ; Edit by Dany If $Hr >= 13 And $Hr <= 24 Then $Hr -= 12 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;; ;;;;;Esta parte te la habia editado dany en el Instalador;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::; GUICtrlCreateLabel($Dia & " " & $Fch & @CRLF & $Mes & @CRLF & $Yr & @CRLF & $Hr & " : " & @MIN & " " & $AP, 5, 402, 138, 60, $WS_DLGFRAME) ;Crea los Controles (Botones) $BtnSlr = GUICtrlCreateButton("Salir", 5, 540, 138, 35, $WS_DLGFRAME) $BtnActlzr = GUICtrlCreateButton("Actualizar", 5, 502.5, 138, 35, $WS_DLGFRAME) $BtnVlvr = GUICtrlCreateButton("Volver", 5, 463, 138, 35, $WS_DLGFRAME) GUICtrlSetDefColor(0x990000) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Aqui realize grandes modificaciones con respecto al codigo original ya que tu utilizabas FileRead ; En este caso utilizamos IniRead que lee directamente desde el ID del control y le da el valor correspondiente ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Global $Anch = 120, $Alt = 25, $Sep = 25 Global $Btna1[10] Global $BPI1 = 150, $BPA1 = 30 For $a1 = 0 To UBound($Btna1) - 1 $Btna1[$a1] = GUICtrlCreateButton("", $BPI1, $BPA1, $Anch, $Alt, $WS_DLGFRAME) $Data = IniRead(@ScriptDir & "\Programas.ini", $Btna1[$a1], "FileName", "") GUICtrlSetData(-1, $Data) $BPA1 += $Sep Next Global $Btna3[10] Global $BPI3 = 290, $BPA3 = 30 For $a3 = 0 To UBound($Btna3) - 1 $Btna3[$a3] = GUICtrlCreateButton("", $BPI3, $BPA3, $Anch, $Alt, $WS_DLGFRAME) $Data = IniRead(@ScriptDir & "\Programas.ini", $Btna3[$a3], "FileName", "") GUICtrlSetData(-1, $Data) $BPA3 += $Sep Next ;Crea los Grupos $Conf = GUICtrlCreateGroup("Configuraciónes", $PosI1, $PosA1, $AncG, $GrsG, $WS_DLGFRAME) GUICtrlSetFont($Conf, $TamFG, $GrsFG, $AtrbFG, $FontG) $Ofic = GUICtrlCreateGroup("Oficina", $PosI2, $PosA1, $AncG, $GrsG, $WS_DLGFRAME) GUISetState(@SW_SHOW) Global $FlRut, $FlName, $FlOpn, $Chckd While 1 $nMsg = GUIGetMsg() ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; En lugar de enumerar cada uno de los botones utilize un bucle for to next y una decaracion para ; determinar si se pulsó el boton ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; For $o = 0 To UBound($Btna1) - 1 If $nMsg = $Btna1[$o] Or $nMsg = $Btna3[$o] Then _ADD() ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Mira la funcion _Add() ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; No es necesario reiniciar el script para actualizar los valores utiliza guictrlsetdata $Valor = IniRead(@ScriptDir & "\Programas.ini", $nMsg, "FileName", "") GUICtrlSetData($nMsg, $Valor) EndIf Next Switch $nMsg Case $BtnActlzr Actlzr() Case $BtnVlvr ; Comando Case $GUI_EVENT_CLOSE, $BtnSlr Exit EndSwitch WEnd Func Actlzr() ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Aqui Edite algo para poder ejecutarlo sin que este compilado ; Utiliza exit para salir del script y volver a ejecutarlo ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ShellExecute(@ScriptFullPath) Exit EndFunc ;==>Actlzr Func _ADD() ;Funcion para cuando se hace clic en los botones $FlRut = FileOpenDialog("Seleccione un Ejecutable", @DesktopCommonDir, "Ejecutables (*.exe;*.bat;*.com;*.cmd)", 1) If @error Or $FlRut = "" Then $MsgBoxAnswera = MsgBox(36, "Seleccione un Ejecutable", "Desea cancelar la selección del fichero?") Select Case $MsgBoxAnswera = 6 ;Yes y Sale de la función Case $MsgBoxAnswera = 7 ;No _ADD() ;Volver a seleccionar EndSelect Else ;$IsSelect = 1 $sFile = FileFindFirstFile($FlRut) ; Busqueda para saber el nombre del ejecutable $nFile = FileFindNextFile($sFile) ; Esto es nada mas para que te muestre un nombre por default e el input FileClose($sFile) ; Cierra busqueda $FlName = InputBox("Programa Agregado", "Usted Selecciono el Siguiente Programa" & $FlRut & @CRLF & @CRLF & "Escriba el Nombre del Programa", $nFile, " M") ;Input Mandatory If @error Or $FlName = "" Then $MsgBoxAnswerb = MsgBox(36, "Seleccione un Ejecutable", "Desea cancelar la selección del fichero?") Select Case $MsgBoxAnswerb = 6 ;Yes y Sale de la función Case $MsgBoxAnswerb = 7 EndSelect Else $Dflt = MsgBox(4, "Listo", "Desea que el programa se instale por default") If $Dflt = 6 Then $Chckd = 1 Else $Chckd = 0 EndIf EndIf ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Aqui es donde se escriben en los ficheros ini ; Con respecto a tu ultima modifcacion aqui no la modfique te lo debo.. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IniWrite(@ScriptDir & "\Programas.ini", $nMsg, "FileName", $FlName) IniWrite(@ScriptDir & "\Programas.ini", $nMsg, "Path", $FlRut) IniWrite(@ScriptDir & "\Programas.ini", $nMsg, "Default", $Chckd) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EndIf EndFunc ;==>_ADD