Pregunta: | 11079 - AL CERRAR WINDOWS, EJECUTAR UN COMANDO |
Autor: | Alex Mauri |
Muy buenas a todos.
Mi pregunta es la siguiente: Tengo una aplicación en memoria durante la ejecución de Windows. Entonces, quiero que si se cierra Windows, mi programa lo sepa y aparezca un mensaje haciendo una preguntita. Si la respuesta es afirmativa, quiero que se grabe una registro en una base de datos Access. Pues bien, yo he puesto la pregunta en el QueryUnLoad y el programa sabe, por la variable que me devuelve este evento, si se está cerrando Windows. El mensaje se muestra correctamente, pero si la respuesta es afirmativa, por lo tanto graba un registro, hay un error numero 5. ¿Porque sucede esto? ¿Es posible que sea porque Windows ya ha empezado a apagarse y no sea posible ejecutar ningún comando? ¿Puedo hacer algo para pausar el cierre de Windows? Bueno, no se si me he explicado bien. Si alguien no me entiende, por favor enviarme un email. Gracias por todo, y que paseis un buen día. Adios. |
Respuesta: | SuNcO |
Tarde un poco pero ya encontre como hacerlo y es con una API
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Esa linea ya sabes, se pone hasta arriba de tu proyecto Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If Form1.Tag <> "ya" Then Cancel = True variable = ExitWindowsEx(1, 1) ' este es para ke no se cierre Windows ' aki proceso de guardar o no se ke kieres Form1.Tag = "ya" End ' aki va a volver al QueryUnload End If variable = ExitWindowsEx(1, 0) ' ahora ke si se cierre, aunke es linea opcional fin: End Sub |