返回

Windows 10 中计划休眠和唤醒:C# 实现及故障排除

windows

在 Windows 10 中使用 C# 实现计划休眠和唤醒

引言

计划休眠和唤醒是 Windows 10 中一项方便的功能,可以帮助你优化电脑的能源效率并安排特定时间的唤醒。虽然这一功能通常可以正常运行,但有时会出现电脑在指定的唤醒时间无法完全唤醒的问题。本文将介绍如何使用 C# 在 Windows 10 中设置计划休眠和唤醒任务,以及如何解决唤醒后电脑屏幕变黑的问题。

计划休眠和唤醒任务

要设置计划休眠和唤醒任务,我们需要使用 .NET 任务计划程序库。

创建休眠任务

首先,创建一个休眠任务,在指定时间将电脑置于休眠状态。

public static void SetDailyHibernateTask(bool enable, TimeSpan sleepTime)
{
    // 删除现有的休眠任务
    ts.RootFolder.DeleteTask("DailySleepTask", false);

    if (enable)
    {
        // 创建一个每日触发器,在指定时间触发任务
        DailyTrigger sleepTrigger = new DailyTrigger();
        sleepTrigger.StartBoundary = DateTime.Today.Add(sleepTime);
        sleepTrigger.DaysInterval = 1;

        // 创建一个可执行操作,执行命令“shutdown -h”将电脑置于休眠状态
        ExecAction sleepAction = new ExecAction("shutdown", "-h", null);

        // 创建一个任务定义,包括触发器和操作
        TaskDefinition sleepTask = ts.NewTask();
        sleepTask.RegistrationInfo.Description = "Daily Sleep Task";
        sleepTask.Principal.UserId = "NT AUTHORITY\\SYSTEM";
        sleepTask.Principal.LogonType = TaskLogonType.ServiceAccount;
        sleepTask.Triggers.Add(sleepTrigger);
        sleepTask.Actions.Add(sleepAction);

        // 注册任务定义
        ts.RootFolder.RegisterTaskDefinition("DailySleepTask", sleepTask);
    }
}

创建唤醒任务

接下来,创建一个唤醒任务,在指定时间唤醒电脑。

public static void SetDailyWakeTask(bool enable, TimeSpan wakeTime)
{
    // 删除现有的唤醒任务
    ts.RootFolder.DeleteTask("DailyWakeTask", false);

    if (enable)
    {
        // 创建一个每日触发器,在指定时间触发任务
        DailyTrigger wakeTrigger = new DailyTrigger();
        wakeTrigger.StartBoundary = DateTime.Today.Add(wakeTime);
        wakeTrigger.DaysInterval = 1;

        // 创建一个可执行操作,执行命令“powercfg -h on”启用唤醒定时器
        ExecAction wakeAction = new ExecAction("powercfg", "-h on", null);

        // 创建一个任务定义,包括触发器和操作
        TaskDefinition wakeTask = ts.NewTask();
        wakeTask.RegistrationInfo.Description = "Daily Wake Task";
        wakeTask.Principal.UserId = "NT AUTHORITY\\SYSTEM";
        wakeTask.Principal.LogonType = TaskLogonType.ServiceAccount;
        wakeTask.Settings.WakeToRun = true;
        wakeTask.Triggers.Add(wakeTrigger);
        wakeTask.Actions.Add(wakeAction);

        // 注册任务定义
        ts.RootFolder.RegisterTaskDefinition("DailyWakeTask", wakeTask);
    }
}

解决唤醒后电脑屏幕变黑的问题

如果你发现电脑在唤醒后屏幕变黑,请尝试以下步骤:

  • 禁用睡眠模式。
  • 禁用"唤醒后需要密码"设置。
  • 设置"电源设置"->"睡眠"->"允许唤醒定时器"为启用。

使用示例

// 设置每天晚上 11:00 休眠
SetDailyHibernateTask(true, new TimeSpan(23, 0, 0));

// 设置每天早上 7:00 唤醒
SetDailyWakeTask(true, new TimeSpan(7, 0, 0));

结论

通过使用 C# 和任务计划程序库,你可以轻松设置计划休眠和唤醒任务。通过解决唤醒后电脑屏幕变黑的问题,你可以确保电脑在指定时间完全唤醒,并立即显示 Windows 界面。

常见问题解答

  1. 为什么在唤醒后屏幕会变黑?
    • 这可能是因为电脑进入了睡眠模式。禁用睡眠模式并启用唤醒定时器可以解决此问题。
  2. 如何知道任务是否成功注册?
    • 检查任务计划程序库中的任务列表,以查看是否已创建并注册了休眠和唤醒任务。
  3. 可以在任务执行时收到通知吗?
    • 是的,你可以设置任务属性以在任务执行时发送电子邮件或其他类型的通知。
  4. 是否可以设置多次休眠或唤醒任务?
    • 是的,你可以通过创建多个触发器来设置多个任务。
  5. 任务计划程序在电脑关机后是否仍然有效?
    • 否,任务计划程序在电脑关机后不会运行。需要重新启动电脑才能执行计划任务。