Delphi - Impedir Apagado de PC

 
Vista:

Impedir Apagado de PC

Publicado por Nicolás Mendoza Hernández (7 intervenciones) el 19/04/2005 01:18:07
Hola que tal.

Alguien sabe como detectar si tratan de apagar la computadora, esto lo quiero saber, para hacer ciertas cosas antes de apagar el PC, esto es por que este PC hace de servidor de Base de Datos, y antes deseo saber si ya se desconectaron todos, si aun hay usuario conectados, evitar que se cierre para evitar que se pierdan sus transacciones. de lo contrario, continuar con el apagado, lo que deseo saber es:

1.- como detectar que se esta queriendo apagar el pc;
2.- como impedir que continue el apagado (Antes de que cierre otros servicio y/o aplicaciones)
3.- como hago para que se ejecute como servicio, para que se active el programa, sin necesidad de que se inicie sesion en windows.

espero que me puedan ayudar, de antemano muchisimas gracias

P.D. De perdida quisiera que me ayudaran con el punto 1 y 2.

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:Impedir Apagado de PC

Publicado por Shannon Devenish (31 intervenciones) el 19/04/2005 05:17:45
respuesta a la 1

Cuando windows se esta apagando, el envia un mensaje WM_QueryEndSession a todas las aplicaciones abiertas
. Para detectar (y prevenir el apagado), se debe definir un manejador de mensajes (message handler) para este mensaje.
colocalo asi.. primero la declaracion del metodo:


procedure WMQueryEndSession(var Msg : TWMQueryEndSession); message WM_QueryEndSession;

y luego el metodo en si en la implemetation:

procedure TForm1.WMQueryEndSession(var Msg : TWMQueryEndSession);
begin
if MessageDlg('Close Windows ?', mtConfirmation, [mbYes,mbNo], 0) = mrNo then
Msg.Result := 0
else
Msg.Result := 1;
end;

con esto respondo a la 1 y la 2

Con respecto a la 3 eso depende del sistema operativo que uses... al menos eso creo de todas
formas si tienes a la disponibilidad de probarlo con virtual pc de microsoft pos mejor asi
todos salimos de dudas para realizar un servicio con delphi crea un nuevo programa en FILE/NEW / SERVICE
y por alli te vas

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