Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Al evitar que cierren Windows, me sale la ventana de error "Finalizar Tarea" :( (https://www.clubdelphi.com/foros/showthread.php?t=47142)

Wonni 20-08-2007 00:21:20

Al evitar que cierren Windows, me sale la ventana de error "Finalizar Tarea" :(
 
Hola;

Llevo un par de dias dandole vuetas a este problema y no consigo solucionarlo ni encuentro nada de información.

Se trata de un programa que se ejecuta al iniciar Windows sin mostrarse la ventana ni en la barra de tareas.

Este programa es para interceptar cuando el usuario cierre Windows y cancelar el apagado. Mostrar una ventana diciendo si desea hacer copia de seguridad de (en este caso 3 programas) antes de apagar o simplemente apagar.

Interceptar el mensaje e impedir el apagado funciona bien, pero Windows muestra la ventana de Finalizar Tarea refiriendose a mi programa.

Utilizo el el truco de Trucomania:
http://www.q3.nu/trucomania/truco.cgi?31&esp

Si despues de asignar Msg.Result := 0 , le añado que cierre el programa, entonces ya no muestra la ventana y Windows no se cierra. Claro, no muestra la ventana porque no le da tiempo.
Pero entonces no me sirve el programa mas que para impedir que se cierre Windows sin mas. (como bromita esta bien, jeje). Pero el simple hecho de mostrar un Mensaje, no da tiempo a leerlo pues Sale la ventana de Finalizar Tarea.

Al ver que si cerraba la aplicacion, no salia el mensaje, pensé en solucionarlo asi:

2 Programas. El primero es que que se está ejecutando e intercepta el apagado de Windows. Lo impide, se cierra, pero llamando antes al segundo programa que es que hace la copia. ...... Peeeeeeeroooo ! otro ERROR:

"la aplicacion ha fallado al inicializarse debido a que la estacion de ventana se ha cerrado"

Al Segundo programa lo llamo asi:

WinExec(PChar(ExtractFilePath(Application.ExeName)+'RBackup.exe'),SW_SHOWNORMAL);

Esto es dentro del Procedure del mensaje:



Código Delphi [-]
procedure TFormprincipal.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
Msg.Result := 0;
WinExec(PChar(ExtractFilePath(Application.ExeName)+'RBackup.exe'),SW_SHOWNORMAL);


Close;
 
end;

Entonces quité el WinExec de aqui y lo puse en el Evento OnClose. ¿Que pasa?, pues que funciona y se ejecuta el segundo programa, pero vuelve a salir la ventana de Finalizar Tarea haciendo referencia ahora a este segundo programa :confused: ¿A cuento de que?

¿Alguna idea?, por que ya no se que hacer mas. Espero que podais hecharme una mano.

Gracias.

Wonni 20-08-2007 16:02:21

He intentado hacerlo Iniciando otro Desktop, pero nada, la llamada a otro Desktop la hago sin problemas, pero si la llamo desde el Procedure que intercepta el cierre de Windows.

Investigando mas, he visto que se pueden programar scripts al inicio y cierre de Windows en las politicas de grupo (ejecutando gpedit.msc), pero eso es en XP Profesional y yo quiero esto para el Home.


La franja horaria es GMT +2. Ahora son las 11:13:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi