2014-03-06 16 views
5
Dim power As PowerStatus = SystemInformation.PowerStatus 
Dim percent As Single = power.BatteryLifePercent 

oderWie kann der Status der zwei Batterien abgerufen werden?

PowerStatus power = SystemInformation.PowerStatus; 
float percent = power.BatteryLifePercent; 

(ich würde eine vb Antwort bevorzugen, wie das ist, was die Anwendung in geschrieben wird, kann aber konvertieren, so C# Ordnung ist, wenn Sie wissen, vb nicht)

Ich verstehe, dass die oben gibt mir der Prozentsatz des verbleibenden Akkus - ABER ich habe ein Tablet, das "hot swappable" ist (es hat eine Hauptbatterie, dann eine kleine 5-Minuten-Batterie, die das Tablet betreibt, während Sie die Batterien tauschen) - wie würde ich den Status finden der zweiten Batterie?

Ich bin auf der Suche nach etwas wie SystemInformation.PowerStatus(0), aber ich habe keine Ahnung, was ich eigentlich versuche zu finden, und ich muss einen Google-Block haben, da ich nichts finden kann.

+0

Es gibt eine WMI ['Win32_Battery'] (http://msdn.microsoft.com/en-us/library/aa394074 (v = vs.85) .aspx) -Klasse, wenn es keinen verwalteten Zugriff auf diese Informationen gibt. –

+0

Schauen Sie auf die Seite http://www.csharpdeveloping.net/Snippet/how_to_enumerate_batteries_using_wmi Es bietet eine vollständige Liste der Informationen, die Sie von der WMI über die Batterien erhalten können –

Antwort

7

Sie können WMI und Win32 verwenden, um den Akkuladestand zu erhalten.

Versuchen Sie folgendes:

ObjectQuery query = new ObjectQuery("Select * FROM Win32_Battery"); 

foreach (ManagementObject o in new ManagementObjectSearcher(query).Get()) 
{ 
    uint level = (uint)o.Properties["EstimatedChargeRemaining"].Value; 
} 
1

Bei mehreren Batterien, Sie Verwendung von WMI machen. Insbesondere Win32_Battery Klasse. Dies wird jedoch ein wenig langsamer als mit PowerStatus Klasse.

+0

Geschwindigkeit kein Problem - wird nur alle 2 Minuten oder so abfragen - nur dass meine Anwendung Vollbild ist, deckt also den Status ab! –