Поделиться через


Функция SetThreadExecutionState (winbase.h)

Позволяет приложению сообщить системе, что оно используется, тем самым предотвращая переход системы в спящий режим или отключение дисплея во время работы приложения.

Синтаксис

EXECUTION_STATE SetThreadExecutionState(
  [in] EXECUTION_STATE esFlags
);

Параметры

[in] esFlags

Требования к выполнению потока. Этот параметр может быть одним или несколькими из следующих значений.

Значение Значение
ES_AWAYMODE_REQUIRED
0x00000040
Включает режим "на месте". Это значение необходимо указать с помощью ES_CONTINUOUS.

Режим away должен использоваться только приложениями для записи и распространения мультимедиа, которые должны выполнять критически важную фоновую обработку на настольных компьютерах, пока компьютер работает в спящем режиме. См. заметки.

ES_CONTINUOUS
0x80000000
Сообщает системе, что заданное состояние должно оставаться в силе до следующего вызова, использующего ES_CONTINUOUS и очистки одного из других флагов состояния.
ES_DISPLAY_REQUIRED
0x00000002
Принудительное включение дисплея путем сброса таймера простоя дисплея.
ES_SYSTEM_REQUIRED
0x00000001
Принудительное использование системы в рабочем состоянии путем сброса таймера простоя системы.
ES_USER_PRESENT
0x00000004
Это значение не поддерживается. Если ES_USER_PRESENT сочетается с другими значениями esFlags , вызов завершится ошибкой и ни одно из указанных состояний не будет задано.

Возвращаемое значение

Если функция выполняется успешно, возвращается предыдущее состояние выполнения потока.

Если функция завершается сбоем, возвращается значение NULL.

Комментарии

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

Вызов SetThreadExecutionState без ES_CONTINUOUS просто сбрасывает таймер простоя; Чтобы сохранить отображение или систему в рабочем состоянии, поток должен периодически вызывать SetThreadExecutionState .

Для правильной работы на управляемом компьютере приложения, такие как факс-серверы, автоответы, агенты резервного копирования и приложения управления сетью, должны использовать при обработке событий как ES_SYSTEM_REQUIRED , так и ES_CONTINUOUS . Мультимедийные приложения, такие как видеоплееры и приложения для презентаций, должны использовать ES_DISPLAY_REQUIRED при отображении видео в течение длительного времени без участия пользователя. Приложениям, таким как текстовые процессоры, электронные таблицы, браузеры и игры, не нужно вызывать SetThreadExecutionState.

Значение ES_AWAYMODE_REQUIRED следует использовать только в том случае, если это абсолютно необходимо для приложений мультимедиа, которым требуется, чтобы система выполняла фоновые задачи, такие как запись телевизионного содержимого или потоковая передача мультимедиа на другие устройства, пока система, как представляется, в спящем режиме. Приложения, которые не требуют критической фоновой обработки или работают на портативных компьютерах, не должны включать режим "вне сети", так как это не позволяет системе экономить энергию, включив режим истинного спящего режима.

Чтобы включить режим "нет", приложение использует как ES_AWAYMODE_REQUIRED , так и ES_CONTINUOUS; Чтобы отключить режим "нет", приложение вызывает SetThreadExecutionState с ES_CONTINUOUS и очищает ES_AWAYMODE_REQUIRED. Если включен режим "нет", любая операция, которая переводит компьютер в спящий режим, переводит его в отключенный режим. Компьютер, как представляется, в спящем режиме, пока система продолжает выполнять задачи, не требующие ввода данных пользователем. Режим Away не влияет на таймер простоя в спящем режиме; Чтобы предотвратить переход системы в спящий режим по истечении срока действия таймера, приложение также должно задать значение ES_SYSTEM_REQUIRED .

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

Эта функция не останавливает выполнение заставки.

Примеры

// Television recording is beginning. Enable away mode and prevent
// the sleep idle time-out.
//
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);

//
// Wait until recording is complete...
//

//
// Clear EXECUTION_STATE flags to disable away mode and allow the system to idle to sleep normally.
//
SetThreadExecutionState(ES_CONTINUOUS);

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

Функции управления питанием

SetSuspendState

SetSystemPowerState

WM_POWERBROADCAST