.png)
Я создал 2 задачи для сна и бодрствования, следуя этому руководству:https://www.groovypost.com/howto/schedule-wake-sleep-windows-automatically/
Если я запускаю задачу сна независимо, ПК переходит в спящий режим и просыпается по событию движения мыши.
Если я запланирую задачу пробуждения и настрою кнопку клавиатуры на переход ПК в спящий режим, он проснется по расписанию.
Таким образом, задачи отлично работают по отдельности, но не в цепочке событий задачи.
Что я пробовал:
- отключить спящий режим
powercfg -h off
- разрешены таймеры пробуждения (установлены на Включено) в Настройках -> Параметры электропитания
- включил в BIOS все, что касается таймеров событий и пробуждений
- использовали паузы между задачами сна и бодрствования более 5 минут
- шаманские танцы с бубном
Дополнительные скриншоты:
Загружаемое ПО не вариант. То же самое поведение на ПК и ноутбуке. Борьба продолжается уже 2 дня...
решение1
$script = '$signature = @"
[DllImport("powrprof.dll")]
public static extern bool SetSuspendState(bool Hibernate,bool ForceCritical,bool DisableWakeEvent);
"@
$func = Add-Type -memberDefinition $signature -namespace "Win32Functions" -name "SetSuspendStateFunction" -passThru
$func::SetSuspendState($false,$true,$false)'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($script)
$encodedCommand = [Convert]::ToBase64String($bytes)
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-encodedCommand $encodedCommand"
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 1 -At 16:43
Register-ScheduledTask -TaskName "Sleep" -Action $action -Trigger $trigger -Force
$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c echo hello"
$settings = New-ScheduledTaskSettingsSet -WakeToRun
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 1 -At 16:44
Register-ScheduledTask -TaskName "Wake" -Action $action -Settings $settings -Trigger $trigger -Force
Работает как по волшебству :)
Также НЕ ИСПОЛЬЗУЙТЕ RUNDLL32, потому что
Rundll32 может вызывать только те функции из DLL, которые явно написаны для вызова Rundll32.
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rundll32#remarks