.png)
私はこのガイドに従って、睡眠と起床の 2 つのタスクを作成しました:https://www.groovypost.com/howto/schedule-wake-sleep-windows-automatically/
スリープ タスクを個別に実行すると、PC はスリープ状態になり、マウスの移動イベントによって起動します。
起動タスクをスケジュールし、PC をキーボード ボタンでスリープに設定すると、スケジュール タスクによって起動します。
したがって、タスクは独立して正常に動作しますが、タスク イベント チェーンでは正常に動作しません。
私が試したこと:
- 休止状態を無効にする
powercfg -h off
- 設定 -> 電源オプションでウェイクアップタイマーを有効にする(有効に設定)
- BIOSでイベントタイマーとウェイクアップに関連するすべての機能を有効にしました
- 睡眠と覚醒のタスクの間に5分以上の休憩を取った
- シャーマンはタンバリンを鳴らしながら踊る
追加のスクリーンショット:
ダウンロード可能なソフトウェアは選択肢ではありません。PC とラップトップで同じ動作です。これまでのところ 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 は、Rundll32 によって呼び出されるように明示的に記述された DLL からの関数のみを呼び出すことができます。
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rundll32#注釈