从C#程序我想调用windows命令提示符并使系统进入睡眠状态,几秒钟后我就应该唤醒系统。我成功地使系统睡眠,但几秒后我就无法将其唤醒。我尝试让它睡眠和唤醒的命令是“powrprof.dll,SetSuspendState 0,1,0&& timeout 10&& echo”Hello World“”。
链接http://www.groovypost.com/howto/schedule-wake-sleep-windows-automatically/表示echo会唤醒系统但不起作用。
答案 0 :(得分:0)
可以使用win32 CreateWaitableTimer API。
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所述。