ejecutar 2 programas cuando se pulsa el boton aceptar

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
adrianodj
Mensajes: 13
Registrado: 18 May 2011, 22:42

ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por adrianodj »

Hola pues os comento tengo el siguente codigo:

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 178, 107, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("Ejecutar Programa1", 8, 8, 105, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Ejecutar Programa2", 8, 32, 105, 17)
$Button1 = GUICtrlCreateButton("Aceptar", 8, 72, 73, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Cancelar", 88, 72, 73, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		case $Button2
			Exit
		case $Button1
			RunWait("$var1","$var2")
	EndSwitch
WEnd
$var1 = $Checkbox1
Necesito saber como puedo arancar 2 programas cuando seleciono una o las 2 checkbox
pero quiero que los programas arranque solamente despues de darle al botton Aceptar
gracias
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por ms999 »

No entiendo lo de $var1 y $var2... pero lo que tenes que hacer es usar la funcion run...
antes del run tendrias que checkear que checkbox esta tildada y cual no para esto fijate la funcion GuiCtrlGetState()
seria algo como...

Código: Seleccionar todo

If GuiCtrlGetState($Checkbox1) = $GUI_CHECKED then
run(blablabla  el progrma que queres que corra... fijate en la ayuda como ponerlo)
endif
If GuiCtrlGetState($Checkbox2) = $GUI_CHECKED then
run(blablabla  el otro programa)
endif
esto debe ir dentro del case del boton... osea...

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 178, 107, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("Ejecutar Programa1", 8, 8, 105, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Ejecutar Programa2", 8, 32, 105, 17)
$Button1 = GUICtrlCreateButton("Aceptar", 8, 72, 73, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Cancelar", 88, 72, 73, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button2
			If GUICtrlGetState($Checkbox1) = $GUI_CHECKED Then
				Run(blablabla el progrma que queres que corra... fijate en la ayuda como ponerlo)
			EndIf
			If GUICtrlGetState($Checkbox2) = $GUI_CHECKED Then
				Run(blablabla el otro programa)
			EndIf
			Exit
		Case $Button1
			RunWait("$var1", "$var2"); esto no se uqe es
	EndSwitch
WEnd
$var1 = $Checkbox1 ;  y esto tampoco se que es 
describi un poco mejor para que queres tu programa porque hay un par de cosas que no entiendo que son... :S
adrianodj
Mensajes: 13
Registrado: 18 May 2011, 22:42

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por adrianodj »

hola gracias por la respuesta tan rapida
pues voi avanzando el codigo que quiero es este lo que pasa que no me ejecuta los dos programas prueba1.exe y prueba2.exe que los tengo juntos con el script
es que pulso el aceptar y el programa se cierra y no hace nada

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 178, 107, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("Ejecutar Programa1", 8, 8, 105, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Ejecutar Programa2", 8, 32, 105, 17)
$Button1 = GUICtrlCreateButton("Aceptar", 8, 72, 73, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Cancelar", 88, 72, 73, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $Button1
         If GUICtrlGetState($Checkbox1) = $GUI_CHECKED Then
            Run("prueba1.exe")
         EndIf
         If GUICtrlGetState($Checkbox2) = $GUI_CHECKED Then
            Run("prueba2.exe")
		EndIf
		Exit
      Case $Button2
		Exit
   EndSwitch
WEnd
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por Chefito »

Mira a ver si falla por que no le has puesto el path donde están los programas. Por ejemplo: run(@scriptdir & "\prueba1.exe").

Si aun así no te funciona, prueba con la función shellexecute.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
sahsanu
Mensajes: 9
Registrado: 02 May 2011, 05:58
Ubicación: Zaragoza, España

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por sahsanu »

adrianodj escribió:pues voi avanzando el codigo que quiero es este lo que pasa que no me ejecuta los dos programas prueba1.exe y prueba2.exe que los tengo juntos con el script
es que pulso el aceptar y el programa se cierra y no hace nada
Para comprobar si el checkbox está marcado usa GUICtrlRead en vez de GUICtrlGetState.
Cyber90
Mensajes: 9
Registrado: 16 May 2011, 16:28
Ubicación: Hacker ist not a Crime !

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por Cyber90 »

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 178, 107, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("Ejecutar Programa1", 8, 8, 105, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Ejecutar Programa2", 8, 32, 105, 17)
$Button1 = GUICtrlCreateButton("Aceptar", 8, 72, 73, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Cancelar", 88, 72, 73, 25, $WS_GROUP)
GUISetState(@SW_SHOW)


While 1
$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
             Exit
          Case $Button1
             If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
                Run("C:\Archivos de programa\Yahoo!\Messenger\YahooMessenger.exe")
             EndIf
             If GUICtrlGetState($Checkbox2) = $GUI_CHECKED Then
                Run("C:\Archivos de programa\Yahoo!\Messenger\YahooMessenger.exe")
          EndIf
          Case $Button2
          Exit
       EndSwitch
    WEnd

TOMA AMIGO AQUI LO TIENES :D :smt041
adrianodj
Mensajes: 13
Registrado: 18 May 2011, 22:42

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por adrianodj »

Cyber90 escribió:

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 178, 107, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("Ejecutar Programa1", 8, 8, 105, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Ejecutar Programa2", 8, 32, 105, 17)
$Button1 = GUICtrlCreateButton("Aceptar", 8, 72, 73, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Cancelar", 88, 72, 73, 25, $WS_GROUP)
GUISetState(@SW_SHOW)


While 1
$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
             Exit
          Case $Button1
             If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
                Run("C:\Archivos de programa\Yahoo!\Messenger\YahooMessenger.exe")
             EndIf
             If GUICtrlGetState($Checkbox2) = $GUI_CHECKED Then
                Run("C:\Archivos de programa\Yahoo!\Messenger\YahooMessenger.exe")
          EndIf
          Case $Button2
          Exit
       EndSwitch
    WEnd

TOMA AMIGO AQUI LO TIENES :D :smt041

Hola pues muchas gracias eres una maquina :) fuaciona poniendo el patch entero del programa o de esta manera
por sahsanu » Hoy, 01:49
Para comprobar si el checkbox está marcado usa GUICtrlRead en vez de GUICtrlGetState.

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 178, 107, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("Ejecutar Programa1", 8, 8, 105, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Ejecutar Programa2", 8, 32, 105, 17)
$Button1 = GUICtrlCreateButton("Aceptar", 8, 72, 73, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Cancelar", 88, 72, 73, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      Case $Button1
         If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
		 ShellExecute("prueba1.exe")
         EndIf
         If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then
		 ShellExecute("prueba2.exe")
		EndIf
      Case $Button2
		Exit
   EndSwitch
WEnd
gracias a todos por contestar doy el tema por finalizado
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por Ximorro »

Hola a todos, veo que lo de la ejecución ya está solucionado, pero hay que tener cuidado con lo del estado del checkbox, porque con la misma llamada puede devolver varios estados. Así si por ejemplo tiene foco y está activado si intentas
GUICtrlRead($Checkbox1) = $GUI_CHECKED
te puede dar falso, aunque esté activado.

El truco está en extraer el estado que te interesa con operaciones de bits. Yo me hice esta función para hacerlo más cómodo:

Código: Seleccionar todo

Func _chkIsChecked($chk)
	Return BitAnd(GUICtrlRead($chk),$GUI_CHECKED) = $GUI_CHECKED
EndFunc
Así para usarlo se hace:
If _chkIsChecked($Checkbox1) Then ...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por ms999 »

hola... :) bien para el primer programa... lo primero que te voy a decir es que uses la herramienta tidy que sirve para ordenar el script y se vea mejor, otra cosa tambien que se nos hace mas comodo a la mayoria es tener las funciones al final del script... son cosas de costumbre y comodidad y que generalmente muchos las hacemos asi por lo tanto nos ayuda a entendernos mejor...

Lo que pasa que titila es porqeu dentro del bucle esta contantemente seteando el estado disabled... fijate en este ejemplo.

Código: Seleccionar todo

$Form1 = GUICreate("Form1", 361, 202, 286, 228)
$Button1 = GUICtrlCreateButton("Desinstalar", 144, 32, 81, 17)
GUISetState(@SW_SHOW)
GUICtrlSetState($Button1, $GUI_ENABLE) ; aunque por defecto ya viene habilitado es para mostrarte
while 1
	$msg = Guigetmsg()
	switch $msg
		case -3 ; o $GUI_EVENT_CLOSE
			Exit
	EndSwitch

WEnd
y mira este otro...

Código: Seleccionar todo

$Form1 = GUICreate("Form1", 361, 202, 286, 228)
$Button1 = GUICtrlCreateButton("Desinstalar", 144, 32, 81, 17)
GUISetState(@SW_SHOW)
while 1
	$msg = Guigetmsg()
	switch $msg
		case -3 ; o $GUI_EVENT_CLOSE
			Exit
	EndSwitch
	GUICtrlSetState($Button1, $GUI_ENABLE)
WEnd
En el segundo le estas diciendo todo el tiempo que cambie su estado para evitar esto tenes muchos metodos, vos tendrias qeu elegir el que mas te combiene
uno de estos metodos seria crear algun tipo de control como una variable con true false.
esta variable habilitaria poder entrar a la parte del scrip donde checkeas los ini y seteas el estado de los controles...
una vez echo esto cambia de valor entonces el script no entrara a esa parte y no tocara el estado de los botones..
esta variable solo volvera a cambiar cuando algun cambio se haya producido, osea cuando uno de los botones de intalar o desinstalar se oprima..

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <guiconstants.au3>

#region ### START Koda GUI section ### Form=
$var = 1
$control = false
$Form1 = GUICreate("Form1", 361, 202, 286, 228)
$Checkbox1 = GUICtrlCreateCheckbox("Install 1", 40, 32, 81, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Install 2", 40, 72, 81, 17)
$Group1 = GUICtrlCreateGroup("Theme", 8, 8, 345, 137)
$Button3 = GUICtrlCreateButton("Desinstalar", 144, 32, 81, 17, $WS_GROUP)
$Button4 = GUICtrlCreateButton("Desinstalar", 144, 72, 81, 17, $WS_GROUP)
$Checkbox3 = GUICtrlCreateCheckbox("Install 3", 40, 112, 73, 17)
$Button5 = GUICtrlCreateButton("Desinstalar", 144, 112, 81, 17, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Aceptar", 64, 160, 97, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Cancelar", 200, 160, 97, 25, $WS_GROUP)
$Checkbox1estado = IniRead("estados.ini", "Checkbox1", "estado", "")
$Checkbox1estado = IniRead("estados.ini", "Checkbox2", "estado", "")
$Checkbox1estado = IniRead("estados.ini", "Checkbox3", "estado", "")
GUICtrlSetState($Button3, $GUI_DISABLE)
GUICtrlSetState($Button4, $GUI_DISABLE)
GUICtrlSetState($Button5, $GUI_DISABLE)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

Func _chkIsChecked($chk)
	Return BitAND(GUICtrlRead($chk), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_chkIsChecked
Func Checkbox1()
	GUICtrlSetState($Button3, $GUI_ENABLE)
	GUICtrlSetState($Checkbox1, $GUI_DISABLE)
EndFunc   ;==>Checkbox1
Func Checkbox2()
	GUICtrlSetState($Button4, $GUI_ENABLE)
	GUICtrlSetState($Checkbox2, $GUI_DISABLE)
EndFunc   ;==>Checkbox2
Func Checkbox3()
	GUICtrlSetState($Button5, $GUI_ENABLE)
	GUICtrlSetState($Checkbox3, $GUI_DISABLE)
EndFunc   ;==>Checkbox3

While 2
	$msg = GUIGetMsg()
	If $control = false Then
	If IniRead("estados.ini", "Checkbox1", "estado", "") Then Checkbox1()
	If IniRead("estados.ini", "Checkbox2", "estado", "") Then Checkbox2()
	If IniRead("estados.ini", "Checkbox3", "estado", "") Then Checkbox3()
	$control = true ; una vez que salga de esta condicion ya no volvera a entrar hasta que control vuelva a ser false
	endif
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Button1
			If _chkIsChecked($Checkbox1) Then
				ShellExecute("prueba1.exe")
				IniWrite("estados.ini", "Checkbox1", "estado", "instalado")
				GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
			EndIf
			If _chkIsChecked($Checkbox2) Then
				ShellExecute("prueba2.exe")
				IniWrite("estados.ini", "Checkbox2", "estado", "instalado")
				GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
			EndIf
			If _chkIsChecked($Checkbox3) Then
				ShellExecute("prueba3.exe")
				IniWrite("estados.ini", "Checkbox3", "estado", "instalado")
				GUICtrlSetState($Checkbox3, $GUI_UNCHECKED)
			EndIf
			$control = false ; una vez que se actualizo algo porque se presiono uno de los botones habilite la entrada a la condicion
		Case $Button2
			Exit

		Case $Button3
			If IniRead("estados.ini", "Checkbox1", "estado", "instalado") Then
				ShellExecute("desinstalar3.exe")
				IniDelete("estados.ini", "Checkbox1", "estado")
				GUICtrlSetState($Button3, $GUI_DISABLE)
				GUICtrlSetState($Checkbox1, $GUI_ENABLE)
				GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
			EndIf
			$control = false
		Case $Button4
			If IniRead("estados.ini", "Checkbox2", "estado", "instalado") Then
				ShellExecute("desinstalar4.exe")
				IniDelete("estados.ini", "Checkbox2", "estado")
				GUICtrlSetState($Button4, $GUI_DISABLE)
				GUICtrlSetState($Checkbox2, $GUI_ENABLE)
				GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
			EndIf
			$control = false
		Case $Button5
			If IniRead("estados.ini", "Checkbox3", "estado", "instalado") Then
				ShellExecute("desinstalar5.exe")
				IniDelete("estados.ini", "Checkbox3", "estado")
				GUICtrlSetState($Button5, $GUI_DISABLE)
				GUICtrlSetState($Checkbox3, $GUI_ENABLE)
				GUICtrlSetState($Checkbox3, $GUI_UNCHECKED)
			EndIf
			$control = false
	EndSwitch
WEnd
Espero que me hays entendido y cualquier duda que te haya quedado pregunta que para eso estamos aca.! ^^
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por ms999 »

soy yo o borraste el mensaje??? :smt044
Avatar de Usuario
sahsanu
Mensajes: 9
Registrado: 02 May 2011, 05:58
Ubicación: Zaragoza, España

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por sahsanu »

ms999 escribió:soy yo o borraste el mensaje??? :smt044
Lo he borrado porque me he equivocado de post :(. Ya lo he puesto en el otro.

Edito: Yo hablaba del que yo había puesto respondiendo porque al no ver la pregunta, estaba convencido de haberme equivocado de post. Al final resulta que lo ha borrado el que lo ha puesto :smt030
Última edición por sahsanu el 20 May 2011, 00:38, editado 1 vez en total.
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por ms999 »

bueno pero te lo conteste aqui!! :smt044
adrianodj
Mensajes: 13
Registrado: 18 May 2011, 22:42

Re: ejecutar 2 programas cuando se pulsa el boton aceptar

Mensaje por adrianodj »

ms999 escribió:hola... :) bien para el primer programa... lo primero que te voy a decir es que uses la herramienta tidy que sirve para ordenar el script y se vea mejor, otra cosa tambien que se nos hace mas comodo a la mayoria es tener las funciones al final del script... son cosas de costumbre y comodidad y que generalmente muchos las hacemos asi por lo tanto nos ayuda a entendernos mejor...

Lo que pasa que titila es porqeu dentro del bucle esta contantemente seteando el estado disabled... fijate en este ejemplo.

Código: Seleccionar todo

$Form1 = GUICreate("Form1", 361, 202, 286, 228)
$Button1 = GUICtrlCreateButton("Desinstalar", 144, 32, 81, 17)
GUISetState(@SW_SHOW)
GUICtrlSetState($Button1, $GUI_ENABLE) ; aunque por defecto ya viene habilitado es para mostrarte
while 1
	$msg = Guigetmsg()
	switch $msg
		case -3 ; o $GUI_EVENT_CLOSE
			Exit
	EndSwitch

WEnd
y mira este otro...

Código: Seleccionar todo

$Form1 = GUICreate("Form1", 361, 202, 286, 228)
$Button1 = GUICtrlCreateButton("Desinstalar", 144, 32, 81, 17)
GUISetState(@SW_SHOW)
while 1
	$msg = Guigetmsg()
	switch $msg
		case -3 ; o $GUI_EVENT_CLOSE
			Exit
	EndSwitch
	GUICtrlSetState($Button1, $GUI_ENABLE)
WEnd
En el segundo le estas diciendo todo el tiempo que cambie su estado para evitar esto tenes muchos metodos, vos tendrias qeu elegir el que mas te combiene
uno de estos metodos seria crear algun tipo de control como una variable con true false.
esta variable habilitaria poder entrar a la parte del scrip donde checkeas los ini y seteas el estado de los controles...
una vez echo esto cambia de valor entonces el script no entrara a esa parte y no tocara el estado de los botones..
esta variable solo volvera a cambiar cuando algun cambio se haya producido, osea cuando uno de los botones de intalar o desinstalar se oprima..

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <guiconstants.au3>

#region ### START Koda GUI section ### Form=
$var = 1
$control = false
$Form1 = GUICreate("Form1", 361, 202, 286, 228)
$Checkbox1 = GUICtrlCreateCheckbox("Install 1", 40, 32, 81, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Install 2", 40, 72, 81, 17)
$Group1 = GUICtrlCreateGroup("Theme", 8, 8, 345, 137)
$Button3 = GUICtrlCreateButton("Desinstalar", 144, 32, 81, 17, $WS_GROUP)
$Button4 = GUICtrlCreateButton("Desinstalar", 144, 72, 81, 17, $WS_GROUP)
$Checkbox3 = GUICtrlCreateCheckbox("Install 3", 40, 112, 73, 17)
$Button5 = GUICtrlCreateButton("Desinstalar", 144, 112, 81, 17, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Aceptar", 64, 160, 97, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Cancelar", 200, 160, 97, 25, $WS_GROUP)
$Checkbox1estado = IniRead("estados.ini", "Checkbox1", "estado", "")
$Checkbox1estado = IniRead("estados.ini", "Checkbox2", "estado", "")
$Checkbox1estado = IniRead("estados.ini", "Checkbox3", "estado", "")
GUICtrlSetState($Button3, $GUI_DISABLE)
GUICtrlSetState($Button4, $GUI_DISABLE)
GUICtrlSetState($Button5, $GUI_DISABLE)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

Func _chkIsChecked($chk)
	Return BitAND(GUICtrlRead($chk), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_chkIsChecked
Func Checkbox1()
	GUICtrlSetState($Button3, $GUI_ENABLE)
	GUICtrlSetState($Checkbox1, $GUI_DISABLE)
EndFunc   ;==>Checkbox1
Func Checkbox2()
	GUICtrlSetState($Button4, $GUI_ENABLE)
	GUICtrlSetState($Checkbox2, $GUI_DISABLE)
EndFunc   ;==>Checkbox2
Func Checkbox3()
	GUICtrlSetState($Button5, $GUI_ENABLE)
	GUICtrlSetState($Checkbox3, $GUI_DISABLE)
EndFunc   ;==>Checkbox3

While 2
	$msg = GUIGetMsg()
	If $control = false Then
	If IniRead("estados.ini", "Checkbox1", "estado", "") Then Checkbox1()
	If IniRead("estados.ini", "Checkbox2", "estado", "") Then Checkbox2()
	If IniRead("estados.ini", "Checkbox3", "estado", "") Then Checkbox3()
	$control = true ; una vez que salga de esta condicion ya no volvera a entrar hasta que control vuelva a ser false
	endif
	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Button1
			If _chkIsChecked($Checkbox1) Then
				ShellExecute("prueba1.exe")
				IniWrite("estados.ini", "Checkbox1", "estado", "instalado")
				GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
			EndIf
			If _chkIsChecked($Checkbox2) Then
				ShellExecute("prueba2.exe")
				IniWrite("estados.ini", "Checkbox2", "estado", "instalado")
				GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
			EndIf
			If _chkIsChecked($Checkbox3) Then
				ShellExecute("prueba3.exe")
				IniWrite("estados.ini", "Checkbox3", "estado", "instalado")
				GUICtrlSetState($Checkbox3, $GUI_UNCHECKED)
			EndIf
			$control = false ; una vez que se actualizo algo porque se presiono uno de los botones habilite la entrada a la condicion
		Case $Button2
			Exit

		Case $Button3
			If IniRead("estados.ini", "Checkbox1", "estado", "instalado") Then
				ShellExecute("desinstalar3.exe")
				IniDelete("estados.ini", "Checkbox1", "estado")
				GUICtrlSetState($Button3, $GUI_DISABLE)
				GUICtrlSetState($Checkbox1, $GUI_ENABLE)
				GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
			EndIf
			$control = false
		Case $Button4
			If IniRead("estados.ini", "Checkbox2", "estado", "instalado") Then
				ShellExecute("desinstalar4.exe")
				IniDelete("estados.ini", "Checkbox2", "estado")
				GUICtrlSetState($Button4, $GUI_DISABLE)
				GUICtrlSetState($Checkbox2, $GUI_ENABLE)
				GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
			EndIf
			$control = false
		Case $Button5
			If IniRead("estados.ini", "Checkbox3", "estado", "instalado") Then
				ShellExecute("desinstalar5.exe")
				IniDelete("estados.ini", "Checkbox3", "estado")
				GUICtrlSetState($Button5, $GUI_DISABLE)
				GUICtrlSetState($Checkbox3, $GUI_ENABLE)
				GUICtrlSetState($Checkbox3, $GUI_UNCHECKED)
			EndIf
			$control = false
	EndSwitch
WEnd
Espero que me hays entendido y cualquier duda que te haya quedado pregunta que para eso estamos aca.! ^^
Ya lo he pillado muchas gracias y espero que algun dia yo tambien podre ayudar a otros :D
He borrado el mensaje porque pensaba que nadie va a volver a leer el post:P
Responder