吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 934|回复: 38
收起左侧

[Python 原创] 电源计划根据屏幕状态自动切换

  [复制链接]
330377782 发表于 2024-9-19 20:54
如题所示,因为本人会经常开着电脑,不关机。就写了一个通过判断显示状态来自动切换节能和卓越性能的软件。

屏幕截图 2024-09-19 205334.png


[Python] 纯文本查看 复制代码
import schedule
import time
import subprocess
import wmi

print("欢迎使用电源状态自动切换软件")

def list_all_devices():
    c = wmi.WMI()
    devices = c.Win32_PnPEntity()
    for device in devices:
        print(f"设备名称: {device.Name}, 当前状态: {device.Status}")

# 调用函数,输出所有设备的名称及状态
#list_all_devices()

def check_device_exists(device_name):
    c = wmi.WMI()
    devices = c.Win32_PnPEntity()
    flag = 0
    for device in devices:
        if device.Name == device_name:
            print(f"设备名称: {device_name}, 当前状态: {device.Status}")
            flag = 1
            break

    if flag == 0:
        print(f"设备名称: {device_name}, 当前状态: 未找到")
        return False
    else:
        return True




def Find_batterystate():
    p = subprocess.Popen('powercfg /getactivescheme',
                        shell=True,
                        stdout=subprocess.PIPE,
                        stderr=subprocess.STDOUT,
                        encoding='gb2312'
                        )
    # 输出stdout
    #print(p.communicate()[0])
    output=p.communicate()[0]
    print(output)
    power_state=4
    if(output=="电源方案 GUID: a1841308-3541-4fab-bc81-f71556f20b4a  (节能)"):
        power_state=0
    elif(output=="电源方案 GUID: 381b4222-f694-41f0-9685-ff5bb260df2e  (平衡)"):
        power_state=1
    elif(output=="电源方案 GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c  (高性能)"):
        power_state=2
    elif(output=="电源方案 GUID: d53ad8e4-e96a-4ce8-a848-50cd120d1b80  (卓越性能)"):
        power_state=3
    else:
        power_state=4
    print(power_state)
    return(power_state)
    
    

def change_low():
    subprocess.call('PowerCfg.exe /setactive a1841308-3541-4fab-bc81-f71556f20b4a', shell=True)

def change_balance():
    subprocess.call('PowerCfg.exe /setactive 381b4222-f694-41f0-9685-ff5bb260df2e', shell=True)

def change_high():
    subprocess.call('PowerCfg.exe /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c', shell=True)

def change_highhigh():
    subprocess.call('PowerCfg.exe /setactive d53ad8e4-e96a-4ce8-a848-50cd120d1b80', shell=True)

def run(): 
    power_state=Find_batterystate()
    result1 = check_device_exists("ASUS VG27AQL1A(DisplayPort)")
    result2 = check_device_exists("Generic Monitor (ORAYDISPLAY)")
    #print(power_state)
    if(power_state==4):
        print("erreor!!!")
        return
    if (result1+result2 > 0):
        if(power_state!=3):
            change_highhigh()
            print("电源模式已切换成卓越模式")
    else:
        if(power_state!=0):
            change_low()
            print("电源模式已切换成省电模式")

schedule.every(0.1).minutes.do(run)  

while True:
    schedule.run_pending() 

免费评分

参与人数 2吾爱币 +7 热心值 +2 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
qq18577 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 330377782 发表于 2024-9-19 20:55
本帖最后由 330377782 于 2024-9-19 20:59 编辑

使用说明:
  • 寻找设备名称可以把第15行代码的#去掉,前来寻找
  • 判断显示器的设备在77 78行,可以安装现在的更改
  • 判定时间在92的括号里,现在的是0.1min
  • 23 28 46 58行都可以进行注释
supertaozi 发表于 2024-9-19 22:11
liguang70217 发表于 2024-9-19 20:55
kangta520 发表于 2024-9-19 20:56
谢谢分享,先试用
迷糊大路痴 发表于 2024-9-19 21:13
厉害了啊大佬
不三不四的蜗牛 发表于 2024-9-19 21:21
感谢大佬分享。。。
stacso 发表于 2024-9-19 21:33
感谢大连分享
Reset1 发表于 2024-9-19 22:02
感谢分享
baibai132 发表于 2024-9-19 22:14

谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 23:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表