Отключение экранной заставки и электропитания в C#

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

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

7
задан Icemanind 17 February 2010 в 21:40
поделиться

1 ответ

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

9
ответ дан 7 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: