作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的一个 friend 最近继承了一台旧笔记本电脑,刚安装了 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:')
第一个 if 语句是我想强制使用电池的地方......以上代码大部分盗自In Python, how can I detect whether the computer is on battery power? .
谢谢。
最佳答案
据我所知,实现这一点的能力与 Python 或其他编程语言没有太大关系。它基本上是笔记本电脑硬件的一种能力,它可能根本不存在。如果它确实存在,那么它需要由制造商的驱动程序公开,并且您可能需要一些低级特定于操作系统的魔法才能从 Python 实际调用驱动程序 API,因为没有操作系统抽象。鉴于您拥有 API 的文档,该文档可能不公开...
如果您对 PC 硬件内部的黑客攻击和逆向工程感兴趣,这可能是一个不错的项目,这当然很有趣:)
关于给笔记本电池充放电的Python脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20748758/
我是一名优秀的程序员,十分优秀!