RE:Detectar cierre de módulo
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.