Таймер переключения Windows в спящий режим

252
30 июня 2022, 20:40

Как в C# считать значения таймера, по которому ОС переключает комп в спящий режим? Может какой-то WMI класс это позволяет? Надо, чтобы до засыпания компа успеть сделать ряд действий из приложения. Когда сработал event - мне уже поздно... Надо за 1 минуту до срабатывания таймера выполнить ряд операций...

Либо второй вариант: не допустить включения спящего режима. М.б. в WMI есть доступ к параметру управления электропитанием. Я бы из своего приложения устанавливал в нем "Никогда", для того, чтоб пользователь при использовании моего приложения не мог назначать режим энергосбережения.

Answer 1

Используйте SystemEvents.

Подпишитесь на событие PowerModeChanged и в его обработчике выполняйте нужные действия.

static void Main(string[] args)
{
    SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
    Console.ReadLine();
}
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
    if (e.Mode == PowerModes.Suspend)
        Console.WriteLine("sleep");
    else
        Console.WriteLine("awake");
}

Я только что опробовал этот код в консольном приложении. Работает.

Надо за 1 минуту до срабатывания таймера выполнить ряд операций

С помощью функции GetLastInputInfo определяете, когда система находится в состоянии простоя. И запускаете свой таймер с интервалом срабатывания на минуту меньше, чем время до перехода в спящий режим.

Единственная проблема: с ходу я не нашёл, как узнать это время до перехода в спящий режим.

Answer 2

Нашёл. Поверил. Работает (типа Veni, Vidi, Vici

READ ALSO
Происходит непонятная вещь с переменной: ее значение чередуется из шага в шаг C#

Происходит непонятная вещь с переменной: ее значение чередуется из шага в шаг C#

Сначала введу в курс дела(Значения переменных не имеют смысла, так проще для понимания)

184
С какой частотой обновляется метод

С какой частотой обновляется метод

С какой частотой будет обновляться метод в юнити, если его не вывести в FixedUpdate() и Update()

156
Как выгрузить изображение из postgres в picturebox c#

Как выгрузить изображение из postgres в picturebox c#

Я пытаюсь получить изображение из postgresql с помощью C #

148
.NET 5 Указание директивы в разных файлах

.NET 5 Указание директивы в разных файлах

Изначально, я шёл сюда за ответом на вопрос "NET 5 не видит SqlConnection"

161