Что я делаю не так с ThreadExecutionState? - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь предотвратить переход ноутбука в спящий режим при открытии программы, я установил спящий режим на 1 минуту и ​​запускаю таймер, установленный на каждые 50 секунд.

public partial class Form2 : Form
{       

    public Form2()
    {
        InitializeComponent();
        timer1.Start();            
    }

    [FlagsAttribute]
    public enum EXECUTION_STATE : uint
    {
        ES_AWAYMODE_REQUIRED = 0x00000040,
        ES_CONTINUOUS = 0x80000000,
        ES_DISPLAY_REQUIRED = 0x00000002,
        ES_SYSTEM_REQUIRED = 0x00000001
        // Legacy flag, should not be used.
        // ES_USER_PRESENT = 0x00000004
    }

    [DllImport("kernel32.dll", SetLastError = true)]
    static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);

    private void timer1_Tick(object sender, EventArgs e)
    {
        SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_SYSTEM_REQUIRED);            
    }
}

При запуске этой программы она ждет 50 секунд, должна активировать функцию и не допустить ее перехода в спящий режим, однако она переходит в спящий режим через ~ 50 секунд после запуска программы.что я делаю не так?

...