Cerrar Formulario

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
juantxo
Hacker del Foro
Mensajes: 78
Registrado: 02 Abr 2008, 13:36

Cerrar Formulario

Mensaje por juantxo »

SALUDOS!

Me encuentro con un problema y no se como solucionarlo.

Estoy preparando una aplicacion, y una de las funciones es realizar PING repetitivo a una IP para ver si esta operativa.
El problema es que en el formulario hay un boton para cerrarlo, pero... mientras esta esperando el PING no es operativo, y el tiempo entre PINGs es minimo, asi que hay que machacar el boton varias veces hasta que aciertas y permite la salida... :smt019

¿Alguna idea? :smt037


Os adjunto el codigo, para facilitar la comprension
La llamada la hago desde otro formulario, asi que aqui defino el $imp_RouterIP muy raro, para que funcione solo esta parte. :smt030

Código: Seleccionar todo

#Region INCLUDES
#include <GUIConstants.au3>

#include <array.au3>
#include <AnimaVentana.au3>
#include <LOG_Programa.au3>
#include <ie.au3>
;~ #include "_DBlistView.au3"
#EndRegion INCLUDES
DIM $Form1P


;~ Func btnPING()
$imp_RouterIP = GUICtrlCreateInput("-",1,1,24,24)
GUICtrlSetData ($imp_RouterIP,"10.125.15.1")

	ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $imp_RouterIP = ' & GUICtrlRead($imp_RouterIP) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
	If StringStripWS(GUICtrlRead($imp_RouterIP), 3) <> "" Then
		frm_Ping(GUICtrlRead($imp_RouterIP))
	Else
		#Region --- CodeWizard generated code Start ---
		;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Warning
		MsgBox(48, "Consulta Conectividad", "No hay ninguna IP para comprobar.")
		#EndRegion --- CodeWizard generated code Start ---
	EndIf
Exit

Func frm_Ping($IP)
	Dim $n_TiempoRespuesta, $ErrorIP, $n_Intentos, $Suma_Tiempos
	Opt("GUIOnEventMode", 0)
	#Region ### START Koda GUI section ### Form=C:\Documents and Settings\n854750\Mis documentos\AutoIT\jxo\Datos CS\Form_Ping.kxf
	$Form1P = GUICreate("Verificación Acceso", 287, 312, 282, 139)
	$Label1P = GUICtrlCreateLabel("Realizando PING a:" & StringStripWS($IP, 3), 16, 24, 122, 20)
	GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
	$Label2P = GUICtrlCreateLabel("Resultado:", 104, 72, 65, 17)
	GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
	$lbl_ResultadoP = GUICtrlCreateLabel("-", 16, 96, 249, 20, $SS_CENTER)
	
	$Label3P = GUICtrlCreateLabel("Intentos:", 16, 136, 54, 17)
	GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
	$inp_IntentosP = GUICtrlCreateInput("0", 88, 132, 100, 21,BitOR($ES_CENTER, $ES_UPPERCASE, $ES_AUTOHSCROLL, $ES_READONLY))
	
	$Label4P = GUICtrlCreateLabel("Tiempos Respuesta:", 16, 168, 119, 17)
	GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
	
	$Label5P = GUICtrlCreateLabel("Ultimo Intento:", 48, 200, 72, 17)
	$Inp_UltimoP = GUICtrlCreateInput("0", 168, 196, 50, 21,BitOR($ES_CENTER, $ES_UPPERCASE, $ES_AUTOHSCROLL, $ES_READONLY))
	$Label6P = GUICtrlCreateLabel("Respuesta Media:", 48, 224, 90, 17)
	$Inp_MediaP = GUICtrlCreateInput("0", 168, 220, 50, 21,BitOR($ES_CENTER, $ES_UPPERCASE, $ES_AUTOHSCROLL, $ES_READONLY))
	GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")

	$Btn_OKP = GUICtrlCreateButton("OK", 96, 272, 81, 25, 0,BitOR($BS_DEFPUSHBUTTON,$BS_NOTIFY))
;~ 	GUICtrlSetOnEvent($Btn_OKP, "btn_OKP")
	
	GUISetState(@SW_ENABLE,$Form1P)
	GUISetState(@SW_SHOW,$Form1P)

	

	#EndRegion ### END Koda GUI section ###
	$Bucle = 1
	While $Bucle
		Sleep(1000)
		$msgP=""
		$msgP = GUIGetMsg()
		ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $msgP = ' & $msgP & ' Boton: '& $Btn_OKP & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
		
		Select
			Case $msgP = $GUI_EVENT_CLOSE
				$Bucle = 0
			Case $msgP = $Btn_OKP
				$Bucle = 0
				ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Bucle = ' & $Bucle & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
			Case Else
				$n_Intentos = $n_Intentos + 1
				$n_TiempoRespuesta = Ping($IP,500)
				$ErrorIP = @error
				If $Bucle = 0 Then ExitLoop
				If $n_TiempoRespuesta = 0 Then ; Error de IP/Ping
;~ 	When the function fails (returns 0) @error contains extended information:
;~ 		1 = Host is offline
;~ 		2 = Host is unreachable
;~ 		3 = Bad destination
;~ 		4 = Other errors
					Switch $ErrorIP
						Case 1
							GUICtrlSetData($lbl_ResultadoP, "ERROR: El destino esta Fuera de Línea")
						Case 2
							GUICtrlSetData($lbl_ResultadoP, "ERROR: El tiempo de vida caduco en transito")
						Case 3
							GUICtrlSetData($lbl_ResultadoP, "ERROR: No existe el destino")
						Case 4
							GUICtrlSetData($lbl_ResultadoP, "ERROR: Error Desconocido")
						Case Else
							GUICtrlSetData($lbl_ResultadoP, "ERROR: Error Desconocido " & $ErrorIP)
					EndSwitch
				Else ; EL Ping ha tenido exito
					GUICtrlSetData($lbl_ResultadoP, "PING Realizado")
					$n_TiempoRespuesta = int($n_TiempoRespuesta*1000)/1000
				EndIf
				$Suma_Tiempos = $Suma_Tiempos + $n_TiempoRespuesta
				GUICtrlSetData($inp_IntentosP, $n_Intentos) ; Intentos Suma
				GUICtrlSetData($Inp_UltimoP, $n_TiempoRespuesta) ; Tiempo Ultimo aviso
				GUICtrlSetData($Inp_MediaP, int(($Suma_Tiempos / $n_Intentos)*1000)/1000)
		EndSelect
	WEnd


	GUISetState(@SW_DISABLE,$Form1P)
	GUISetState(@SW_HIDE,$Form1P)	
EndFunc   ;==>frm_Ping
1.000 gracias! :smt023
Avatar de Usuario
juantxo
Hacker del Foro
Mensajes: 78
Registrado: 02 Abr 2008, 13:36

Re: Cerrar Formulario

Mensaje por juantxo »

Pero que PARDILLO soy!!!!

En el codigo pongo:

Código: Seleccionar todo

 
   While $Bucle
      Sleep(1000)
      $msgP=""
      $msgP = GUIGetMsg()
Y creo que el problema esta ahi, en el sleep(1000) y no en el PING

Reduzco el Sleep a (100) y funciona!!!

gracias! :smt041
Responder