睡眠命令后唤醒Windows系统的命令

Posted

技术标签:

【中文标题】睡眠命令后唤醒Windows系统的命令【英文标题】:command to wake up the windows system after sleep command 【发布时间】:2015-09-23 10:38:17 【问题描述】:

我想从 C# 程序调用 windows 命令提示符并使系统进入睡眠状态,几秒钟后我应该唤醒系统。我成功地使系统睡眠,但几秒钟后我无法唤醒它。我尝试让它休眠和唤醒的命令是“powrprof.dll,SetSuspendState 0,1,0 && timeout 10 && echo "Hello World""。

链接http://www.groovypost.com/howto/schedule-wake-sleep-windows-automatically/ 说 echo 会唤醒系统但它不工作。

【问题讨论】:

你的命令永远不会起作用,因为睡眠和唤醒需要是单独的任务。如果您阅读链接到的文章,您会看到两个不同的计划任务,一个用于睡眠,另一个用于唤醒。 有没有办法让电脑休眠再唤醒? 不是在同一个命令中。一旦它睡着了,唤醒它的唯一方法就是从计划任务中唤醒它。该链接解释了这一点“实际上并没有命令行命令来唤醒您的计算机。那是因为如果您能够运行命令,那么您的计算机显然已经处于唤醒状态。”跨度> 如上,计算机在休眠状态下无法运行命令。您必须使用唤醒定时器(又名唤醒 rtc)进行研究 唤醒系统的计划任务仅在 GUI 中可用,在评论提示中不可用 【参考方案1】:

可以使用 win32 CreateWaitableTimer API。

在调用系统睡眠时,创建 WaitableTimer 的进程必须处于活动状态。 示例使用 pywin32 api。 在您的 Windows 电源配置中允许计时器将系统从睡眠状态唤醒。 from win32event import CreateWaitableTimer from win32event import SetWaitableTimer from win32event import WaitForSingleObject import sys def main(minutes): minutes = int(minutes) handle = CreateWaitableTimer(None, True, 'Wake up') dt = -10000000 * minutes * 60 # Convert to seconds. SetWaitableTimer(handle, dt, 0, None, None, True) rc = WaitForSingleObject(handle, 1000 * (minutes + 1) * 60) # 11 s. print ("Done") if __name__ == '__main__': minutes = sys.argv[1] main(minutes)

从控制台运行上述脚本调用wakeupWindows.py,如:

python wakeupWindows.py 2

将从现在起将唤醒计时器设置为 2 分钟。 该脚本将等待 2 + 1 = 3 分钟。 从另一个控制台让系统进入睡眠状态:

shutdown /h

2分钟后,系统将从睡眠中唤醒。

使用 C# 可以实现类似的实现,或者可以使用 pyinstaller 将此脚本转换为 exe,如 here 所述。

【讨论】:

对我不起作用,SetWaitableTimer 失败并出现“不支持”错误。

以上是关于睡眠命令后唤醒Windows系统的命令的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu 进程睡眠怎么唤醒

win7专业版64位,台式机睡眠和休眠后立即被唤醒

Ubuntu休眠后无法唤醒黑屏

电脑进入休眠黑屏之后无法唤醒关机重启也没用?

ubuntu休眠后无法唤醒

使用任务计划程序唤醒后,Windows 10 电脑在两分钟内重新进入睡眠状态