我正在开发一款需要了解计算机能耗的应用程序(在 Windows 上)。我意识到操作系统没有直接支持此功能的功能,所以我的解决方法是收集有关所有硬件设备的信息并汇总它们消耗的能量,我找到了类似这样的数据库eXtreme 电源计算器但他们没有我可以使用的任何 API。您对如何实现这一点有什么建议吗?有开源软件吗?
因为我的应用程序主要在笔记本电脑上运行,所以我想根据笔记本电脑型号进行粗略估计,但我找不到保存此类信息的数据库,有什么想法吗?谢谢
答案1
答案2
看看Win32_PowerMeter位于root\CIMV2\power
命名空间中的 WMI 类。此命名空间包含许多与电源管理和配置文件相关的其他类和事件。
有关使用此类的示例,请参阅开源电源排水小工具小工具(使用 ActiveX 对象)。有关 VBScript 示例,请参阅这. 有关 C# 示例,请参阅这。
答案3
笔记本电脑通常提供 ACPI 接口来连接电池,您可以使用它。您将特别关注第 10.2.2.6 章中描述的“电池状态”对象ACPI 规范:
_BST returns a package in the format below
Package {
Battery State // Integer (DWORD)
Battery Present Rate // Integer (DWORD)
Battery Remaining Capacity // Integer (DWORD)
Battery Present Voltage // Integer (DWORD)
}
Battery Present Rate
通常是以 mW 为单位的功率值或以 mA 为单位的电流值(您必须将其乘以Battery Present Voltage
才能获得功率值)。当然,还有更多 ACPI 值可供探索(包括电源的电流和电压测量),但这些值可能并非在所有系统上都实现。安装系统信息查看器并查看Machine->Battery
以了解它。或者,如果您恰好是 Linux 用户,请查看/sys/class/power_supply
目录。
您将需要学习如何使用您所使用的任何编程语言和框架在 Windows 上进行 ACPI 调用。这篇 MSDN 文章可能是一个好的开始。