Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ejecutar funcion al cerrarse el programa

Estas en el tema de Ejecutar funcion al cerrarse el programa en el foro de Visual Basic clásico en Foros del Web. He probado en el evento unload y terminate y es lo mismo. Lo que mi funcion hace es guardar el contenido de un textbox en ...
  #1 (permalink)  
Antiguo 03/08/2009, 18:05
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Ejecutar funcion al cerrarse el programa

He probado en el evento unload y terminate y es lo mismo.

Lo que mi funcion hace es guardar el contenido de un textbox en un archivo de texto al cerrar el programa, pero si alguien termina el proceso desde el administrador de tareas no me graba nada supongo que lo mismo pasara si la energia falla.

Como hago para que en cualquier caso de estos siempre puede guardar la informacion del texbox?
  #2 (permalink)  
Antiguo 03/08/2009, 20:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 3
Respuesta: Ejecutar funcion al cerrarse el programa

Hace que la informacion se guarde a medida que vas editando el texto... es lo mejor que se me ocurre xD
  #3 (permalink)  
Antiguo 04/08/2009, 00:17
 
Fecha de Ingreso: noviembre-2008
Mensajes: 136
Antigüedad: 15 años, 5 meses
Puntos: 2
Mensaje Respuesta: Ejecutar funcion al cerrarse el programa

Saludos, la respuesta a tu problema se encuentra en el evento QueryUnload

Ya que aqui puedes cancelar el cierre de la ventana, y además saber como es que estan cerrando tu ventana; ya sea por darle click a la X, o desde código, o se esta terminando el programa, o si estan usando el administrador de tareas.

Aqui te consegui un link hacerca de este evento
http://msdn.microsoft.com/en-us/libr...8VS.60%29.aspx

Espero que te sea de utilidad
  #4 (permalink)  
Antiguo 04/08/2009, 11:16
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Ejecutar funcion al cerrarse el programa

bueno lo revisare y espero solucionar, saludos a los 2
  #5 (permalink)  
Antiguo 04/08/2009, 17:58
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: Ejecutar funcion al cerrarse el programa

El evento QueryUnload solo funciona al finalizar la tarea, pero si termino el proceso abruptamente con el comando taskkill no me guarda nada.

Aparte de ese problema tambien no me guarda el contenido del texbox al apagarse el computador con "power" o quitando el cable de energia, es posible lograr lo que se hace en word es decir cuando falla la energia te guarda un copia temporal, aunque me parece que word hace ese proceso periodicamente por que no te recupera el file al 100%

En fin si mo se puede ni modo tendre que guardar el texbox cada x tiempo, aun asi faltaria resolver como hacer cuando se utiliza el comando taskkill del D.O.S

Código:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'vbFormCode         1   Unload method invoked from code.
'vbAppWindows       2   Current Windows session ending.
'vbFormMDIForm      4   MDI child form is closing because the MDI form is closing.
'vbFormControlMenu  0   User has chosen Close command from the Control-menu box on a form.
'vbAppTaskManager   3   Windows Task Manager is closing the application.

    Select Case UnloadMode

    Case 0
    MsgBox "no se puede cerrar 0"
    Cancel = True
    
    Case vbAppTaskManager
    Call Grabar_estado
    MsgBox "no se puede cerrar 3"
    Cancel = True

    End Select

End Sub
  #6 (permalink)  
Antiguo 05/08/2009, 15:22
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: Ejecutar funcion al cerrarse el programa

Se me ocurre que vayas guardando a traves de un timer seteado en 3 segundos, lo que creas que es lo mas correcto, en un archivo temporal, y que tenga una variable del tipo "bandera" seteado en 1 si no se termino la tarea deseado para la aplicacion.

Ahora si justo se corto la luz, cuando vuelvo a abrir la aplicacion, si la bandera esta en 1 (osea que no se termino de realizar la tarea deseada), aviso con un msjbox y muestro lo que se guardo hasta el momento, me parece lo mas correcto.

Si queres que sea extremadamente sensible podes incluso hacerlo en la accion change de la caja de texto, de manera que cada accion que se realice en la misma se vaya guardando en el archivo temporal.
  #7 (permalink)  
Antiguo 05/08/2009, 16:29
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
Respuesta: Ejecutar funcion al cerrarse el programa

porque no lo haces en el evento

Private Sub Text1_LostFocus()

End Sub

o talvez en

Private Sub Text1_Validate(Cancel As Boolean)

End Sub
__________________
www.leandroascierto.com
  #8 (permalink)  
Antiguo 09/08/2009, 13:28
Avatar de abel_c_b  
Fecha de Ingreso: junio-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ejecutar funcion al cerrarse el programa

Cita:
Iniciado por ema21del9 Ver Mensaje
Se me ocurre que vayas guardando a traves de un timer seteado en 3 segundos, lo que creas que es lo mas correcto, en un archivo temporal, y que tenga una variable del tipo "bandera" seteado en 1 si no se termino la tarea deseado para la aplicacion.

Ahora si justo se corto la luz, cuando vuelvo a abrir la aplicacion, si la bandera esta en 1 (osea que no se termino de realizar la tarea deseada), aviso con un msjbox y muestro lo que se guardo hasta el momento, me parece lo mas correcto.

Si queres que sea extremadamente sensible podes incluso hacerlo en la accion change de la caja de texto, de manera que cada accion que se realice en la misma se vaya guardando en el archivo temporal.
Creo que esto es lo que te conviene, saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:47.