Ver Mensaje Individual
  #5  
Antiguo 11-04-2011
Avatar de Red_Leon
Red_Leon Red_Leon is offline
Miembro
 
Registrado: oct 2007
Ubicación: Castilla la Mancha
Posts: 27
Reputación: 0
Red_Leon Va por buen camino
Bueno, despues de 2 días he encontrado la solución. Tal como decia el amigo Ñuño buscando en el MSDN, encontre una función del kernel que no viene soportada por Delphi a priori. Aqui abajo la dejo por si a alguien le viene bien. Aunque sea dentro de otro año jjjj.

Código Delphi [-]
const
  ES_SYSTEM_REQUIRED = $00000001;
  ES_DISPLAY_REQUIRED = $00000002;
  ES_USER_PRESENT = $00000004;
  ES_AWAYMODE_REQUIRED = $00000040;
  ES_CONTINUOUS = $80000000;

type
  EXECUTION_STATE = DWORD;

procedure SetThreadExecutionState(ESFlags: EXECUTION_STATE) ; stdcall; external kernel32 name 'SetThreadExecutionState';

{Evita la hibernación del PC}
procedure evitarHibernacion;
begin
  SetThreadExecutionState(ES_CONTINUOUS or ES_SYSTEM_REQUIRED or ES_DISPLAY_REQUIRED);
end;

Basta con llamar a la función una sola vez en la ejecución del programa, no hace falta llamarla con un Timer o cada cierto tiempo. Probado y testeado.

Salud compañeros!
Responder Con Cita