临街小站

电脑定时睡眠

原理

实际上实现的原理相当简单,python可以通过os模块的system函数执行相应平台提供的系统API函数,在win平台下,有很多cmd命令行可供我们调用,有两种方式实现:

  1. 通过at指令在指定时间为系统天剑一项作业

  2. 计算指定时间与当前时间的差值,然后暂歇等待执行

经过测试,at指令在某些环境下面并不能够正常执行,所以我选择了方法2.

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import os
import time
import sys
rh=int(time.strftime("%H",time.localtime()))
rm=int(time.strftime("%M",time.localtime()))
print('当前时间:'+str(rh)+':'+str(rm))
cmd="cmd.exe /k shutdown -s -t 0"
c1=True
while c1:
try:
h=int(input("Please input the hour:"))
if h>=0 and h<=23:
c1=False
else:
continue
except:
continue
c2=True
while c2:
try:
m=int(input("Please input the minute:"))
if m>=0 and m<=59:
c2=False
else:
continue
except:
continue
c3=True
while c3:
try:
print('Please input the Mode:')
print('1: 睡眠 2:注销')
print('3: 关机')
m=int(input("Please input the Mode:"))
c3=False
if m==3:
cmd="cmd.exe /k shutdown -s -t 0"
elif m==1:
cmd="cmd.exe /k rundll32.exe powrprof.dll,SetSuspendState"
elif m==2:
cmd="cmd.exe /k shutdown -l -t 0"
else:
c3=True
continue
except:
continue
if h==rh:
if m<=rm:
os.system(cmd)
else:
time.sleep((m-rm)*60)
time.sleep(5)
os.system(cmd)
elif h>rh:
tem1=(h-rh-1)*3600+(60-rm+m)*60
time.sleep(tem1)
time.sleep(5)
os.system(cmd)
else:
tem2=(23-rh+h)*3600+(60-rm+m)*60
time.sleep(tem2)
time.sleep(5)
os.system(cmd)

相关

程序提供了3种模式,分别是定时关机、定时注销、定时睡眠。指定这三种模式的初衷也是因为防止我晚上在床上通过Ipad使用电脑电影资源时间上的无节制。

Windows下有两种相似的模式,睡眠与休眠,这两种模式的区别大家可以在专业的百科网站上面获取。正常情况下,这两种模式不能在同一时间使用,电脑性能较高的情况下,建议优先使用睡眠功能,恢复的时间更短。

开启关闭休眠模式

  1. on powercfg -h on

  2. off powercfg -h off

相关命令

  • rundll32.exe powrprof.dll,SetSuspendState <睡眠(关闭休眠时)>

  • shutdown -l <注销>

  • shutdown -h <休眠>

  • shutdown -s <关机>

  • shutdown -t <设置倒计时>

clinjie wechat
Think about u every day