No estoy seguro si hay una solución mejor .NET pero aquí es cómo se puede utilizar la API de que:
Los usings requeridos:
using System.Runtime.InteropServices;
El P/Invoke:
public const uint ES_CONTINUOUS = 0x80000000;
public const uint ES_SYSTEM_REQUIRED = 0x00000001;
public const uint ES_DISPLAY_REQUIRED = 0x00000002;
[DllImport("kernel32.dll", SetLastError = true)]
public static extern uint SetThreadExecutionState([In] uint esFlags);
Y luego desactivar el protector de pantalla por:
SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED);
permiten Finnaly protector de pantalla por el restablecimiento del estado de ejecución de nuevo a valor original:
SetThreadExecutionState(ES_CONTINUOUS);
nota que acaba de recoger una de las banderas al azar en mi ejemplo. Debería combinar los indicadores correctos para obtener el comportamiento específico que desea. Encontrará el description of flags on MSDN.
¿Qué sucede si solo impide que se activen las opciones de protector de pantalla/alimentación (por ejemplo, enviar una pulsación de tecla al sistema operativo cada N segundos)? – fre0n
@icemanind: ¿Te diste cuenta de esto? –
Sí. Encontré una clase bastante agradable en C# aquí: http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx – Icemanind