Не уверен, что есть лучшее решение .NET, но вот как вы могли бы использовать этот API:
Требуемые значения:
using System.Runtime.InteropServices;
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);
А затем отключить заставку с помощью:
SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED);
Finnaly включить заставку путем сброса состояния выполнения обратно к исходному значению:
SetThreadExecutionState(ES_CONTINUOUS);
Обратите внимание, что я просто выбрал один из флагов случайным образом в моем примере. Вам нужно будет комбинировать правильные флаги, чтобы получить желаемое поведение. Вы найдете описание флагов на MSDN .