From da955fd4da26cb78ed42f491669397ea4f1f7a69 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger <asterix@lagaule.org> Date: Thu, 15 Oct 2009 19:51:49 +0200 Subject: [PATCH] [hildjj] go away under windows too when screensaver is active. Fixes #4178 --- src/common/sleepy.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/common/sleepy.py b/src/common/sleepy.py index d5f17edf2b..507452ea9e 100644 --- a/src/common/sleepy.py +++ b/src/common/sleepy.py @@ -43,6 +43,11 @@ try: lastInputInfo = LASTINPUTINFO() lastInputInfo.cbSize = ctypes.sizeof(lastInputInfo) + + # one or more of these may not be supported before XP. + OpenInputDesktop = ctypes.windll.user32.OpenInputDesktop + CloseDesktop = ctypes.windll.user32.CloseDesktop + SystemParametersInfo = ctypes.windll.user32.SystemParametersInfoW else: # unix from common import idle except Exception: @@ -65,6 +70,21 @@ class SleepyWindows: if not SUPPORTED: return False + # screen saver, in windows >= XP + saver_runing = ctypes.c_int(0) + # 0x72 is SPI_GETSCREENSAVERRUNNING + if SystemParametersInfo(0x72, 0, ctypes.byref(saver_runing), 0) and \ + saver_runing.value: + self.state = STATE_XA + return True + + desk = OpenInputDesktop(0, False, 0) + if not desk: + # Screen locked + self.state = STATE_XA + return True + CloseDesktop(desk) + idleTime = self.getIdleSec() # xa is stronger than away so check for xa first -- GitLab