2010-02-17 1 views
5

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

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

+0

Что делать, если вы просто не позволили активировать экранную заставку/параметры питания (например, отправить штрих ключа в ОС каждые N секунд)? – fre0n

+0

@icemanind: Вы поняли это? –

+0

Да. Я нашел довольно хороший класс на C# здесь: http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx – Icemanind

ответ

7

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

+0

http://stackoverflow.com/questions/241222/need-to-disable-the-screen-saver-screen-locking-in-windows-c-net – user1005462

+2

SetThreadExecutionState (EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_SYSTEM_REQUIRED); - отлично работать на win10 – user1005462

 Смежные вопросы

  • Нет связанных вопросов^_^