按进程获取电池使用情况

问题描述:

我有一个代码(在C#中)用于管理我的计算机上的所有进程。按进程获取电池使用情况

我使用PerformanceCounter类来查找在一个特定过程中链接的所有值。

有关示例,该代码retrived用于Firefox的处理器使用时间:

PerformanceCounter processorTime = new PerformanceCounter("Process", "% Processor Time", "firefox"); 

double processTime = 0; 

while(true){ 
    processTime = processorTime.NextValue(); 
} 

而且,我知道如何取回我的电池的百分比:

PowerStatus power = SystemInformation.PowerStatus; 
float secondsRemaining = power.BatteryLifePercent; 
if (secondsRemaining >= 0) 
{ 
    kpiBattery.batteryLevel = (secondsRemaining * 100).ToString(); 
} 

我想要得到的用法电池BY PROCESS,而不是全球。

例如,在使用“firefox”的过程中,谁使用了多少电池?

我知道我希望在过程开始时以及过程中断时取得电池电量,并且有所作为,但是,它不是真正的电池使用等级,因为在开始和结束时间过程之间,可能很多其他过程正在运行,并且也消耗电池。

如果您有任何想法,或者如果您知道解决方案,我非常感兴趣。

谢谢。

+2

这不可能没有估计,因为操作系统不能问主板什么是每个上下文切换的电池水平,就像它的时间。 – Dani 2012-07-31 10:13:14

正如您已经说过的,许多过程可以同时运行。而且,电池使用量与CPU使用率没有直接关系。它可能是硬盘活动,图形芯片等。所以,没有办法计算每个过程的充足电池使用量。

+0

好的,谢谢你解释,这太可惜了:'( – 2012-07-31 11:57:39