¿Cuando el monitor se pone negro?
O bien, para detectarlo en una aplicación Delphi necesitas crear una manejador para el mensaje WM_QUERYENDSESSION:
Código Delphi
[-]
type
TForm1 = class(TForm)
private
procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
end;
interface
procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
inherited;
end;
end.
Hay formas de impedir que termine la sesión. Para ello te recomiendo busques en la ayuda del SDK de Windows (incluída con Delphi) la referencia a este mensaje.
// Saludos