Я пишу приложение в C#, который проигрывает фильм. Я должен выяснить, как отключить экранную заставку и электропитание с помощью C#.
Я знаю, что Windows SDK API имеет функцию под названием SetThreadExecutionState (), который может использоваться, чтобы сделать это, однако, я не знаю, существует ли лучший способ сделать это. В противном случае, как я включаю эту функцию в C#?
Не уверен, есть ли лучшее решение .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 .