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';
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!