Не уверен, что если есть лучшее решение .NET, но вот как вы можете использовать этот API:
Необходимые usings:
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);
Обратите внимание, что я просто выбрал один из флагов в случайном порядке в моем примере. Вам нужно будет совместить правильные флаги, чтобы получить конкретное поведение, которое вы желаете. Вы найдете description of flags on MSDN.
Что делать, если вы просто не позволили активировать экранную заставку/параметры питания (например, отправить штрих ключа в ОС каждые N секунд)? – fre0n
@icemanind: Вы поняли это? –
Да. Я нашел довольно хороший класс на C# здесь: http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx – Icemanind