Visual Basic - Detectar cierre de módulo

Life is soft - evento anual de software empresarial
 
Vista:

Detectar cierre de módulo

Publicado por Julián (4 intervenciones) el 16/12/2005 19:28:33
otra pregunta para los expertos, un poco más definida que la anterior, ¿cómo hago para que mi programa que consta sólo de un módulo detecte cuando le llega el mensaje de cerrarse?, gracias, saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Detectar cierre de módulo

Publicado por ivan (463 intervenciones) el 16/12/2005 19:49:43
Cuando un formulario se cierra, ya sea con el método Unload o porque el usuario pulsa ALT-F4 o la clásica "X" se desencadena el evento UNLOAD del formulario, ahí detectas cuando el formulario se va a cerrar.

Puedes controlar si se cierra o no.

Espero esto sea lo que preguntaste. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Detectar cierre de módulo

Publicado por Julián (4 intervenciones) el 17/12/2005 05:56:40
No sé... tal vez me expresé mal, mi programa no tiene ningún formulario, sino solo un módulo bas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Detectar cierre de módulo

Publicado por EGV (385 intervenciones) el 17/12/2005 15:19:02
ok el modulo no se cierra nunca, solo cuando se termina el programa.
Deberias tener un formulario que es la interfaz grafica con la que el usuario interactua con tu programa, donde aparecen los botones, cajas de texto, etc
A menos que hayas hecho un programa que realice una determinada funcion sin que el usuario detecte esto, pero no creo que sea tu caso.
byby
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Detectar cierre de módulo

Publicado por SetFocus (183 intervenciones) el 17/12/2005 20:31:29
Hola! No se si entendi bien tu problema, pero se me ocurrio lo siguente, paso a contarte
Queda claro que tu desarrollo no lleva una interfaz con la que el usuario interactua. Lo que te propongo es que agregues un formulario de todos modos al proyecto, que para lo unico que va a servir, es precisamente, determinar cuando se esta intentando cerrar la aplicacion. Entonces lo que tendrias que hacer es, en ese modulo que tiene tu proyecto, agregar un procedimiento "Main" (si es que ya no lo agregaste) y alli, lo primero que haces es llamar al formulario de forma oculta, o sea:

Sub Main()

form1.hide

En Sub

Luego en el evento "QueryUnload" del formulario pondrias el codigo necesario para controlar el cierre de tu aplicacion. En el ejemplo lo que hago es mostrar un cartel cuando se intenta cerrar la aplicacion desde el "Administador de Tareas" (CTRL+ALT+DEL)
No conosco cual es tu intencion, pero de ese modo sabrias que se esta intentando cerrar la aplicacion y asi decidir que accion tomar.

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

If UnloadMode = vbAppTaskManager Then
MsgBox "me estoy cerrando"
End If

End Sub

Por ejemplo si lo que queres es evitar el cierre de la aplicacion, lo que tendrias que hacer es, al parametro "Cancel" ponerlo en False, entonces el mismo codigo seria:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

If UnloadMode = vbAppTaskManager Then
MsgBox "me estoy cerrando"
Cancel = False
End If

End Sub

Algunas aclaraciones.
Para que esto funcione, la aplicacion debe iniciar desde el modulo "Main" esto lo conseguis llendo al menu "Proyecto" alli "Propiedades de proyectoX" y en la ventana que se abre, en la solapa "General" en donde dice "Objeto inicial" seleccionas "Sub Main"

En la linea: If UnloadMode = vbAppTaskManager Then
el parametro UnloadMode acepta otros valores, asi podes controlar tambien por ejemplo, si la aplicacion se esta cerrando porque Windows se esta cerrando. Revisa la ayuda que ahi estan todas las posibilidades.

Al probarlo desde el entorno de Visual Basic, aveces me daba un error, pero al compilar y generar el ejecutable, funcion sin problemas. =)

Bueno, espero que te sirva. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar