繁体   English   中英

如何知道python中monitor的状态是开还是关?

[英]How to know the status of monitor is on or off in python?

如何知道python中monitor的状态是开还是关?

我希望每小时每 50 分钟收到一次蜂鸣声通知,如下所示:

import datetime
import time
import winsound

frequency = 2500 # Set Frequency To 2500 Hertz
duration = 200 # Set Duration To 1000 ms == 1 second
while True:
     # If the monitor is Black by sleep mode
     if ???:
         time.sleep(60)
         continue
     now = datetime.datetime.now()
     if now.minute == 50:
         print(now)
         winsound.Beep(frequency, duration)
         time.sleep(60)

但是,我不想在显示器关闭时收到蜂鸣声通知,因为我工作时显示器是开着的,而显示器关闭是因为我不工作时它处于省电模式。

但我不知道如何判断显示器是开着还是关着。

我怎样才能知道我的显示器的状态?

最好的祝福!

我这样解决

import time
from datetime import datetime

import win32api
import winsound

frequency = 1500
duration = 100


def getIdleTime():
    return (win32api.GetTickCount() - win32api.GetLastInputInfo()) / 1000.0


while True:
    now = datetime.now()
    if getIdleTime() > 3600:
        continue
    elif now.minute == 50:
        winsound.Beep(frequency, duration)

    time.sleep(60)
``

这个问题让我着迷,就像永恒的经典“如果门关上,冰箱灯真的亮着吗”?

在试图解决这个问题时,我想知道屏幕截图会出现什么情况,就好像显示屏已关闭一样。 所以,我测试了一下。 这个想法是,如果屏幕是黑色的,您可以对像素求和并检测该值是否为 0 以确定显示器是打开还是关闭。

不幸的是,通过测试,显示器关闭时的屏幕截图似乎不是黑屏,至少在我的设备上是这样。 欢迎您对自己的进行测试,如果好奇的话,无论如何我都会发布“解决方案”。

该解决方案可能需要了解 windows 已知的连接设备及其状态,我猜这在 python 中可能很棘手。

import datetime
import time
import winsound
from mss import mss
from PIL import Image
import numpy

def screen_accumulator():
    #take screenshot
    mss().shot()
    #retrieve png
    im = Image.open("monitor-1.png")
    pix = numpy.array(im)
    return(numpy.sum(pix))

frequency = 2500 # Set Frequency To 2500 Hertz
duration = 200 # Set Duration To 1000 ms == 1 second

while True:
     # If the monitor is Black by sleep mode
     if screen_accumulator()==0:
         time.sleep(60)
         continue
     now = datetime.datetime.now()
     if now.minute == 50:
         print(now)
         winsound.Beep(frequency, duration)
         time.sleep(60)

正如这个旧答案中所述,没有可靠的方法来检查监视器的状态。 但我认为您不必依赖监视器 state。检查不活动时间是更好的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM