Написал программу, которая должна работать круглосуточно, поставил ее на ноутбук.
Как она работет:
Есть рассписание и если в определенные промежутки времени срабатывает условие, то программа выполняет определенные действия, иначе если это не тот промежуток времени или если условие не срабатывает, то программа просто крутит зацикленное видео. Так вот, если долго не срабатывет условие, то даже не смотря на то, что видео идет, компьютер переходит в спящий режим.
Пробовал через powercfg.cpl, поставил "Отключать дисплей" и "Переводить компьютер в спящий режим" на НИКОГДА, но не помогло.
Скажите пожалуйста, как это можно поправить?
Вот тут перечислены следующие варианты:
DisplayRequest
метод RequestActive
Воспользоваться WinAPI SetThreadExecutionState
и вызвать как-то так(сорс):
// Set new state to prevent system sleep
fPreviousExecutionState = NativeMethods.SetThreadExecutionState(
NativeMethods.ES_CONTINUOUS | NativeMethods.ES_SYSTEM_REQUIRED);
internal static class NativeMethods
{
// Import SetThreadExecutionState Win32 API and necessary flags
[DllImport("kernel32.dll")]
public static extern uint SetThreadExecutionState(uint esFlags);
public const uint ES_CONTINUOUS = 0x80000000;
public const uint ES_SYSTEM_REQUIRED = 0x00000001;
}
Слушать WM_POWERBROADCAST
сообщение. (Сорс EnSO)
protected override void WndProc(ref System.Windows.Forms.Message m)
{
// Power status event triggered
if(m.Msg == (int)WindowMessage.WM_POWERBROADCAST)
{
// Machine is trying to enter suspended state
if(m.WParam.ToInt32() == (int)WindowMessage.PBT_APMQUERYSUSPEND ||
m.WParam.ToInt32() == (int)WindowMessage.PBT_APMQUERYSTANDBY)
{
// Have perms to deny this message?
if((m.LParam.ToInt32() & 0x1) != 0)
{
// If so, deny broadcast message
m.Result = new IntPtr((int)WindowMessage.BROADCAST_QUERY_DENY);
}
}
return;
}
base.WndProc(ref m);
}
}
internal enum WindowMessage
{
/// <summary>
/// Notify that machine power state is changing
/// </summary>
WM_POWERBROADCAST = 0x218,
/// <summary>
/// Message indicating that machine is trying to enter suspended state
/// </summary>
PBT_APMQUERYSUSPEND = 0x0,
PBT_APMQUERYSTANDBY = 0x0001,
/// <summary>
/// Message to deny broadcast query
/// </summary>
BROADCAST_QUERY_DENY = 0x424D5144
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как правильно осуществить перегрузку и использовать в дальнейшем данный логический оператор «!»Если сравнивается следующие: если заданная...
есть такой код, который должен рассчитывать по данным стоимость домана сайте это выглядит как два селекта и поле для ввода метража
Нашел простой гайд как сделать админпанель с возможностью постинга и редактирования постовСделал всё как в видео, но добавление и редактирование...