Cor*_*rre 6 python battery powermanager batterylevel battery-saver
我的一位朋友最近继承了一台旧笔记本电脑,刚刚安装了Windows 7,并希望延长电池续航时间.最初电池持续约20分钟,但通过手动让电池完全放电再充电几次,他已设法将电池寿命延长到一个小时左右.我们认为看到我们可以提高电池性能的程度会很有趣!我想写一个脚本让电池在一夜之间循环 - 这对于偶尔在任何一台电脑上运行来维持电池健康状况可能会有用吗?我可以获得电池状态,但无法看到如何指示笔记本电脑忽略交流电源线的存在并使用电池.我有一种感觉答案就在那里:https: //pypi.python.org/pypi/LaptopControlPanel但我对我的理解完全达到极限!任何帮助都会很棒.
import ctypes
from ctypes import wintypes
class SYSTEM_POWER_STATUS(ctypes.Structure):
_fields_ = [
('ExternalPower', wintypes.BYTE),
('BatteryFlag', wintypes.BYTE),
('BatteryLifePercent', wintypes.BYTE),
('Reserved1', wintypes.BYTE),
('BatteryLifeTime', wintypes.DWORD)
]
SYSTEM_POWER_STATUS_P = ctypes.POINTER(SYSTEM_POWER_STATUS)
GetSystemPowerStatus = ctypes.windll.kernel32.GetSystemPowerStatus
GetSystemPowerStatus.argtypes = [SYSTEM_POWER_STATUS_P]
GetSystemPowerStatus.restype = wintypes.BOOL
status = SYSTEM_POWER_STATUS()
if not GetSystemPowerStatus(ctypes.pointer(status)):
raise cytpes.WinError()
print 'ExternalPower', status.ExternalPower
#print 'BatteryFlag', status.BatteryFlag
print 'BatteryLifePercent', status.BatteryLifePercent
print 'BatteryLifeTime', status.BatteryLifeTime
if status.ExternalPower == True and status.BatteryLifePercent == 100:
print 'Connected to mains and at 100% charge: Begining decharge'
# This is where I would like to force battery use. Perhaps with a while
#loop (that ticks every 60 seconds or so)
if status.BatteryLifePercent > 10 :
status.ExternalPower = 0
elif status.ExternalPower == True and status.BatteryLifePercent < 100:
print 'Connected to mains and charging up to 100%'
status.ExternalPower = 1
elif status.ExternalPower == False:
print 'Not connected to mains'
else:
print ' Unknown system status'
x = raw_input('Press ENTER to close:')
Run Code Online (Sandbox Code Playgroud)
第一个if语句是我想强制使用电池的地方......上面的代码大部分是从Python中窃取的,我如何检测计算机是否使用电池供电?.
谢谢.
小智 2
AFAIK,实现这一点的能力与 Python 或其他编程语言没有太大关系。它基本上是笔记本电脑硬件的一种功能,并且可能根本不存在。如果它确实存在,那么它需要由制造商的驱动程序公开,并且您可能需要一些低级特定于操作系统的魔法来实际从 Python 调用驱动程序 API,因为没有对此进行操作系统抽象。鉴于您有 API 文档,该文档可能不公开......
如果您对 PC 硬件内部的黑客攻击和逆向工程感兴趣,这可能是一个不错的项目,这当然很有趣:)