Para evitar que el sistema ingrese al modo inactivo, puede intentar usar la función SetThreadExecutionState
. Esta función informa al sistema que la aplicación está en uso y le permite especificar los requisitos de ejecución del hilo. El uso puede ser así, pero no estoy seguro si esto afecta también la energía del disco temporizador de cuenta atrás:
type
EXECUTION_STATE = DWORD;
const
ES_SYSTEM_REQUIRED = $00000001;
ES_DISPLAY_REQUIRED = $00000002;
ES_USER_PRESENT = $00000004;
ES_AWAYMODE_REQUIRED = $00000040;
ES_CONTINUOUS = $80000000;
function SetThreadExecutionState(esFlags: EXECUTION_STATE): EXECUTION_STATE;
stdcall; external 'kernel32.dll' name 'SetThreadExecutionState';
procedure TForm1.Button1Click(Sender: TObject);
begin
if SetThreadExecutionState(ES_CONTINUOUS or ES_SYSTEM_REQUIRED or
ES_AWAYMODE_REQUIRED) <> 0 then
try
// execute your long running task here
finally
SetThreadExecutionState(ES_CONTINUOUS);
end;
end;
O también está disponible el nuevo conjunto de funciones PowerCreateRequest
, PowerSetRequest
y PowerClearRequest
diseñados para Windows 7, pero la documentación es confusa y no he encontrado ningún ejemplo de su uso en este momento.
O puede modificar la configuración de energía mediante las funciones PowerWriteACValueIndex
o PowerWriteDCValueIndex
con el subgrupo de configuraciones de energía GUID_DISK_SUBGROUP
.
Establezca manualmente un plan de energía diferente desde el panel de control. Eliminaría un programa que cambia el plan de energía a mis espaldas. – kludg
¿La computadora apaga el disco mientras está en uso? Eso realmente no suena bien para mí. ¿Estás seguro? –
En resumen, Windows no apagará el disco durante una escritura de disco activa, pero el OP no está haciendo una lectura de archivo o escritura de archivo adecuada, por lo que Windows puede suspender el disco o toda la computadora. El OP puede estar equivocando un poco el problema. –