Отключение заставки и параметров электропитания в C # - PullRequest
6 голосов
/ 18 февраля 2010

Я пишу приложение на C #, которое воспроизводит фильм. Мне нужно выяснить, как отключить заставку и параметры питания с помощью C #.

Я знаю, что в Windows SDK API есть функция SetThreadExecutionState (), которую можно использовать для этого, однако я не знаю, есть ли лучший способ сделать это. Если нет, то как мне включить эту функцию в C #?

1 Ответ

7 голосов
/ 18 февраля 2010

Не уверен, что есть лучшее решение .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 .

...