Evitar cierre de formulario vb6

Iniciado por Buggcon, 7 Abril 2013, 04:28 AM

0 Miembros y 1 Visitante están viendo este tema.

Buggcon

Hola amig@s sucede que tengo una aplicacion en vb6.
Se ejecuta en segundo plano
Ahora cuando se produce un error este se cierra

¿Hay algo para evitar que se cierre por un error?
Es decir que solo ignore el error. Gracias

$Edu$

Aprende a buscar en google un poco que se encuentran las cosas mas rapido que preguntando.

Tienes que usar "On error goto ..." para que cuando haya un error vaya a donde quieras y luego en ese "donde quieras" pones "Variable = 1" que esa variable sera global y asi en el Form_Unload() pondras "if Variable = 1 then Cancel = 1" y ahi se cancela el bloqueo.

Aunque creo que dependera de que tipo es el error, si es muy grave no creo que puedas hacer algo.

Eleкtro

#2
Cita de: Buggcon en  7 Abril 2013, 04:28 AMAhora cuando se produce un error este se cierra
¿Hay algo para evitar que se cierre por un error?

No somos magos, podrías empezar por detallar el error, mostrando una imagen o copiando el error completo, así sería más fácil.






Si quieres ignorar complétamente TODOS los errores, aparte de controlar la excepción, creo que sería suficiente con desactivar el debugger de Windows.

U otra forma es mandar todas las excepciones no controladas a un método, para controlarlas allí o símplemente para ignorarlas ante el debugger (para que no te aparezca el dialogo de error):

EDITO: No te quiero confundir mucho, esto es código de VB.NET, no manejo VB6 y no me hago una idea de como trasladarlo, eso se lo dejo a $Edu$ xD, en lugar del Try usa un "on error goto" vacío, yo te doy la idea, el código funciona ;) :

Código (vbnet) [Seleccionar]

Public Class Form1

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Try
           AddHandler Application.ThreadException, AddressOf Application_ExHandler
           Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException, False)
       Catch : End Try
   End Sub

   Private Sub Application_ExHandler(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
       ' Aquí controlas las excepciones.
       ' Dim ex As Exception = CType(e.Exception, Exception)
       ' MsgBox(ex.Message)
       ' O lo dejas vacio para ignorarlas.
   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       IO.File.OpenText("X:\Fail.txt")
   End Sub

End Class


http://msdn.microsoft.com/en-us/library/system.windows.forms.application.setunhandledexceptionmode.aspx

PD: El contenido del form load lo deberías meter en el Main tanto en una app de consola como en una GUI, porque lo conveniente es usarlo antes de que se cree cualquier control del form. Aunque con un simple "Try/on error goto" como en el ejemplo lo solucionas también.

Saludos.