Akkuladestand auslesen

Hallo,

wie komm ich an den Akkuladestand? (in Prozent)

Gruß,
Franz

Hi!
Schau’ mal hier nach: http://msdn.microsoft.com/library/default.asp?url=/l…
Über diese WMI-Klasse bekommst Du alles mögliche über den Akku raus.
Und die WMI-Unterstützung im .NET Framework ist auch ganz gut, so dass Du ziemlich flott an die Infos kommen müsstest…

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Schau’ mal hier nach:
http://msdn.microsoft.com/library/default.asp?url=/l…
Über diese WMI-Klasse bekommst Du alles mögliche über den Akku
raus.
Und die WMI-Unterstützung im .NET Framework ist auch ganz gut,
so dass Du ziemlich flott an die Infos kommen müsstest…

Das scheint genau das zu sein, was ich suche.

Leider weiß ich überhaupt nicht wie ich auf die WMI zugreifen kann…

Gruß,
Franz

Ich hab’ zwar gerade keinen Laptop greifbar, aber das Codestück hier kann Dir schon mal den Einstieg erleichtern:

using System.Management;
 
ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT \* FROM Win32\_PortableBattery"); 
ManagementObjectCollection queryCollection = query.Get(); 
foreach (ManagementObject mo in queryCollection)
{
 Trace.WriteLine(mo.Path);
 foreach (PropertyData pd in mo.Properties)
 {
 Trace.WriteLine(" "+pd.Name+" = "+pd.Value);
 }
}

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like

Ich hab’ zwar gerade keinen Laptop greifbar, aber das
Codestück hier kann Dir schon mal den Einstieg
erleichtern:

using System.Management;

ManagementObjectSearcher query = new
ManagementObjectSearcher(„SELECT * FROM
Win32_PortableBattery“);
ManagementObjectCollection queryCollection = query.Get();
foreach (ManagementObject mo in queryCollection)
{
Trace.WriteLine(mo.Path);
foreach (PropertyData pd in mo.Properties)
{
Trace.WriteLine(" „+pd.Name+“ = "+pd.Value);
}
}

Gruß,
Martin

Ja der Code ist schon mal nicht schlecht!

Leider fehlt mir der Namespace System.Management.
Muss ich mir den von MSDN downloaden?

Gruß,
Franz

Nö, einfach einen Verweis auf System.Management einfügen.
Die betreffende Assembly wird bei jeder .NET Framework-Installation mit installiert.

In der Framework SDK Beschreibung der Klassen ist übrigens auch immer angegeben, in welchem Namespace und in welcher Assembly die entsprechende Klasse enthalten ist.

Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Nö, einfach einen Verweis auf System.Management einfügen.
Die betreffende Assembly wird bei jeder .NET
Framework-Installation mit installiert.

In der Framework SDK Beschreibung der Klassen ist übrigens
auch immer angegeben, in welchem Namespace und in welcher
Assembly die entsprechende Klasse enthalten ist.

Sorry, in diesem Gebiet bin ich absoluter Anfänger, kannst du mir vielleicht sagen wie ich das genau mache?

Gruß,
Franz

Ich geh’ mal davon aus, dass Du VS.NET/2003 hast.
Dort hast Du in deinem Projektmappen-Explorer in jedem Projekt einen Knoten „Verweise“.
Dort im Kontextmenü „Verweis hinzufügen“ anklicken, in der oberen Liste „System.Management“ suchen und anklicken, Auswählen klicken, OK klicken, fertig.

Ich will ja nicht unhöflich klingen, aber solche elementare Sachen wie das Anlegen von Verweisen, das Konzept der Assemblies und Namespaces sollte man vielleicht mal in der Hilfe nachlesen.
Da gibt es prima Kapitel zu den ersten Schritten in VS.NET

Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like

Ich geh’ mal davon aus, dass Du VS.NET/2003 hast.

Richtig!

Ich will ja nicht unhöflich klingen, aber solche elementare
Sachen wie das Anlegen von Verweisen, das Konzept der
Assemblies und Namespaces sollte man vielleicht mal in der
Hilfe nachlesen.
Da gibt es prima Kapitel zu den ersten Schritten in VS.NET

Naja mit Namespaces kenn ich mich ja aus, aber Assemblies… :-/
Du hast Recht, ich sollte mich da mal informieren…

Der Quelltext von oben liefert mir aber leider überhaupt nichts. Ich hab ihn mal debuggt und herausgefunden, dass queryCollection leer ist. :frowning:

Gruß,
Franz

Ich geh’ mal davon aus, dass Du VS.NET/2003 hast.

Richtig!

Ich will ja nicht unhöflich klingen, aber solche elementare
Sachen wie das Anlegen von Verweisen, das Konzept der
Assemblies und Namespaces sollte man vielleicht mal in der
Hilfe nachlesen.
Da gibt es prima Kapitel zu den ersten Schritten in VS.NET

Naja mit Namespaces kenn ich mich ja aus, aber Assemblies…

-/

Du hast Recht, ich sollte mich da mal informieren…

Der Quelltext von oben liefert mir aber leider überhaupt
nichts. Ich hab ihn mal debuggt und herausgefunden, dass
queryCollection leer ist. :frowning:

In der queryCollection sind nur dann Einträge, wenn WMI auch was zum betreffenden Thema gefunden hat.
Wann Win32_Battery nichts liefert ist ebenfalls in der Doku zu Win32_Battery beschrieben:http://msdn.microsoft.com/library/en-us/wmisdk/wmi/w… .
Kann es sein, dass Du den Code auf einem Rechner ohne Akku oder ohne aktiviertes APM unter Win2000 oder 98 laufen lässt?
Ich habe nämlich gerade tatsächlich das Notebook rausgekramt und verifiziert, dass mit „SELECT * FROM Win32_Battery“ auch das ManagementObject zum internen Akku kommt.

Gruß,
Franz

Martin

1 Like

Kann es sein, dass Du den Code auf einem Rechner ohne Akku
oder ohne aktiviertes APM unter Win2000 oder 98 laufen lässt?
Ich habe nämlich gerade tatsächlich das Notebook rausgekramt
und verifiziert, dass mit „SELECT * FROM Win32_Battery“ auch
das ManagementObject zum internen Akku kommt.

Hab jetzt das ehemalige „Win32_PortableBattery“ durch „Win32_Battery“ ersetzt und nun geht es!!!

DANKE du hast mir sehr geholfen!

Gruß,
Franz

[…]

DANKE du hast mir sehr geholfen!

Gruß,
Franz

Stets zu Diensten :wink:

Martin

Hallo Franz

Das scheint genau das zu sein, was ich suche.

Leider weiß ich überhaupt nicht wie ich auf die WMI zugreifen
kann…

… dann schau mal auf www.software-developers-home.de. Dort sind Beispiele zum runterladen und mehrere Artikel dazu.

Chris

1 Like

… dann schau mal auf www.software-developers-home.de. Dort
sind Beispiele zum runterladen und mehrere Artikel dazu.

Danke, werd ich mir anschauen.

Gruß,
Franz