唤醒计算机的脚本无法从python脚本内部运行

时间:2018-07-30 09:27:33

标签: python windows powershell sleep wakeup

对于这个问题是否已经提出,我很抱歉,但是我尝试了一天没有成功,所以请尝试提供帮助。

我需要将计算机设置为睡眠状态,并在一分钟后自动将其唤醒。

我编写了一个脚本来这样做:

wakeUp.py:

handle = CreateWaitableTimer(None, True, 'Wake up')

# Convert to seconds.
dt = -10000000 * 60 
#set a timer to wakeup
SetWaitableTimer(handle, dt, 0, None, None, True)

print "waiting..."
rc = WaitForSingleObject(handle, 1000 * 60)

if(rc == win32event.WAIT_FAILED):
    print "wait failed"
elif(rc == win32event.WAIT_TIMEOUT):
    print "wait timeout"
elif(rc == win32event.WAIT_OBJECT_0):
    print ("Woke Up!")

当我单独运行脚本然后告诉我的计算机进入睡眠状态时,该脚本有效。 当我尝试从python程序内部启动计算机时,计算机进入睡眠状态但未唤醒。 尝试检查任务管理器时,我发现该程序作为Windows Powershell的子进程运行(从此处启动python程序)

这是我的python代码的相关部分:

def startSleepProcess():
    print "Going to sleep.."
    #set computer to sleep
    subprocess.call(["powershell.exe","Rundll32.exe Powrprof.dll, SetSuspendState Sleep"], shell=True)

def wakeUp():
    subprocess.Popen("python wakeUp.py", shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)

if _name__ == "__main__":
    wakeUp()
    startSleepProcess()

为什么会这样?我该如何解决?

谢谢!

0 个答案:

没有答案