命令在sleep命令后唤醒windows系统

时间:2015-07-02 10:41:52

标签: windows-7 windows command-line sleep

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

链接http://www.groovypost.com/howto/schedule-wake-sleep-windows-automatically/表示echo会唤醒系统但不起作用。

1 个答案:

答案 0 :(得分:0)

可以使用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所述。