Существует ли какое-либо приложение Windows, которое определит, какой процесс препятствует активизации заставки?
6 ответов
PowerCFG встроен в Windows и позволяет вам контролировать и просматривать множество настроек управления питанием.
powercfg -energy -trace
Это создаст очень подробный журнал событий управления питанием energy-trace.etl. Откройте его с помощью средства просмотра событий и отфильтруйте журнал по источникам событий: Kernel-Power, включите идентификатор события: 62.
Это должно дать вам события, которые выглядят так:
Приложение или служба \Device \HarddiskVolume1 \games \Steam \Steam.exe изменили параметры управления питанием пользователя с кодом 0x3.
Код может отличаться в зависимости от того, была ли предотвращена заставка, режим ожидания монитора или другой переход состояния.
Запустите powercfg /requests
из командной строки администратора. Например, мой напечатал:
DISPLAY:
[PROCESS] \Device\HarddiskVolume8\Games\Origin\Origin.exe
Playing video
SYSTEM:
[DRIVER] Realtek High Definition Audio (HDAUDIO\FUNC_01&VEN_10EC&DEV_0900&SUBSYS_10438560&REV_1000\4&9793a48&0&0001)
An audio stream is currently in use.
AWAYMODE:
None.
Что указывает на то, что Origin воспроизводил видео, и это мешало запуску заставки.
Иногда просто изменив время на заставке (не на тип) на что-то другое, скажем, от 10 минут до 1, а затем вернувшись к тому, что у вас было раньше, заставка будет работать нормально.
Спасибо W1N9Zr0 за то, что он указал мне правильное направление!
В моем случае это была машина XP Pro (SP3), поэтому переключатель "энергия" был недоступен. Однако переключатель "запрос устройства" указывал, что это была либо мышь, либо клавиатура. Как только я переключился с клавиатуры PS/2, которую я использовал, на клавиатуру USB, экранная заставка (и другие параметры питания) активировались в соответствии с настройками.
ПРИМЕЧАНИЕ. Когда экранная заставка была настроена на 1 минуту, она иногда включалась, поэтому я знал, что она работает. Что-нибудь выше 1 минуты, и заставка никогда не сработает.
Я считаю, что виновником, как правило, является медиаплеер. Вы могли бы подумать, что это будет только при воспроизведении видео, но у меня были некоторые музыкальные плееры, которые не использовали экранную заставку. Например, сегодня у меня были открыты и приостановлены Amazon Music и Groove, и я обнаружил, что мой экран все еще разблокирован через час.
Я не уверен, кто виноват, но я подозреваю их из-за IDE и браузера, который я запускал, оба из которых позволяют блокировать экран.
Я не знаю ни одной программы, которая делает это, но способ узнать это с помощью функции GetThreadExecutionState(), которая будет содержать значение ES_DISPLAY_REQUIRED, если поток в настоящее время блокирует активацию заставки.
Если вы примените эту функцию ко всем потокам в системе и затем вызовете GetProcessIdOfThread в найденном вами потоке, вы обнаружите процесс, который блокирует экранную заставку.