admin 管理员组文章数量: 1184232
我的电脑有个顽疾:经常关机后会自动重启,带来很多不便。后来,我发现,自动重启的现象与电脑使用时间有关,只要不用太久,就不会有这个问题,所以,我就写了一个简单的 Python 脚本,来应付这个问题。源代码如下:
import wx
import time
import os
from queue import Queue
from threading import Thread
class Timer(object):
def __init__(self, time, func):
self.time = time
self.func = func
self.queue = Queue()
def start(self):
def f(queue: Queue):
time.sleep(self.time)
if queue.get():
self.func()
self.queue.put(True)
th = Thread(target=f, args=(self.queue,))
th.start()
def stop(self):
try:
self.queue.get_nowait()
except:
return False
else:
self.queue.put(False)
return True
class MyFrame(wx.Frame):
def __init__(self, *args, **kw):
super().__init__(*args, **kw)
self.panel = wx.Panel(self)
self.label = wx.StaticText(self.panel, label='即将在10秒后自动关机!')
font = self.label.GetFont()
font.SetPointSize(font.GetPointSize() + 4)
self.label.SetFont(font)
self.btn = wx.Button(self.panel, label='取消')
self.btn.SetFont(font)
self.sizer = wx.BoxSizer(wx.VERTICAL)
borderSize = 30
self.sizer.Add(self.label, 1, wx.ALIGN_CENTER | wx.TOP | wx.LEFT | wx.RIGHT, borderSize)
self.sizer.Add(self.btn, 3, wx.EXPAND | wx.ALL, borderSize)
self.panel.SetSizer(self.sizer)
self.Bind(wx.EVT_BUTTON, self.OnBtnClick, self.btn)
self.Bind(wx.EVT_CLOSE, self.OnClose, self)
self.timer = Timer(10, lambda : os.system('shutdown -s -t 0'))
self.timer.start()
self.sizer.Fit(self)
def OnBtnClick(self, event):
self.Close()
def OnClose(self, event):
self.timer.stop()
event.Skip()
path = r'D:\Temp\time_record.txt'
f = open(path, 'r')
t = int(f.read())
f.close()
if time.time() - t < 150:
app = wx.App()
frame = MyFrame(None, title='自动关机')
frame.Show()
app.MainLoop()
while True:
f = open(path, 'w')
f.write(str(int(time.time())))
f.close()
time.sleep(1)
其原理十分简单:每隔1秒,就在一个文件里写入当前时间,这样,就能知道关机时,电脑的时间,第二次启动时,查看当前时间与上一次关机的时间,如果间隔小于一定值(这里我定为2分半),就自动关机。
保存时,要把脚本的后缀名改成 .pyw,这样就不会有控制台窗口,可以在后台静默运行。
最后就是要把这个脚本设置成开机启动,只需要把脚本放在"C:\Users\<你的用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"这个文件夹里,就可以了。
虽然这个方法很暴力,但是确实解决了问题。
版权声明:本文标题:从新手到大神的进阶教程:彻底解决Flash中心崩溃问题! 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1772158447a3552777.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论