Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
hardfalcon
Beiträge: 3447 Registriert: 29.08.2004 20:46
Beitrag
von hardfalcon » 25.04.2005 22:35
Hiermit könnt ihr den Powerstatus des Systems abfragen. DAs ist v.a. bei Notebooks interessant. Nur gibt der API-Befehl bei mir teilweise die erwarteten Werte mit einem - davor zurück. Weiss jemand, woran das liegt? Oder muss ich die betreffenden Werte immer mit -1 multiplizieren?
Hier ist erstaml der Code:
Code: Alles auswählen
;© 2005 by hardfalcon, many thx to dige and Laurin!
;See also the following web documents:
;http://msdn.microsoft.com/library/Default.asp?url=/library/en-us/power/base/getsystempowerstatus.asp
;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/power/base/system_power_status_str.asp
;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/power/base/power_management_functions.asp
SPS.SYSTEM_POWER_STATUS
GetSystemPowerStatus_(SPS.SYSTEM_POWER_STATUS)
Debug SPS.SYSTEM_POWER_STATUS\ACLineStatus & 255 ;korrigiert
Debug SPS.SYSTEM_POWER_STATUS\BatteryFlag & 255 ;korrigiert
Debug SPS.SYSTEM_POWER_STATUS\BatteryLifePercent & 255 ;korrigiert
Debug SPS.SYSTEM_POWER_STATUS\Reserved1 & 255 ;korrigiert
Debug SPS.SYSTEM_POWER_STATUS\BatteryLifeTime
Debug SPS.SYSTEM_POWER_STATUS\BatteryFullLifeTime
//EDIT: Code entsprechend den anderen Postings korrigiert, also bei den mit ";korrigiert" markierten zeilen hinten noch ein "& 255" hinzugefügt.
//EDIT2: Bei den beiden letzen Codezeilen das "& 255" wieder entfernt, da die beiden letzten Zeilen keine unsigned Bytes sind.
Zuletzt geändert von
hardfalcon am 26.04.2005 15:42, insgesamt 3-mal geändert.
hardfalcon
Beiträge: 3447 Registriert: 29.08.2004 20:46
Beitrag
von hardfalcon » 25.04.2005 22:49
Danke für das positive Feedback! Ich habe mir den halben Tag lang den A**** aufgerissen, um mit vordefinierten Strukturen (SYSTEM_POWER_STATUS) klarzukommen. Der Source für VB aus dem API-Guide wollte sich einfach nicht portieren lassen, dann habe ich den aus dem MSDN genommen...
dige
Beiträge: 1239 Registriert: 08.09.2004 08:53
Beitrag
von dige » 26.04.2005 12:24
hardfalcon hat geschrieben: ...gibt der API-Befehl bei mir teilweise die erwarteten Werte mit einem - davor zurück. Weiss jemand, woran das liegt? Oder muss ich die betreffenden Werte immer mit -1 multiplizieren?
Das -1 steht für 255 .. laut MSDN "Unknown status."
"Papa, ich laufe schneller - dann ist es nicht so weit."
hardfalcon
Beiträge: 3447 Registriert: 29.08.2004 20:46
Beitrag
von hardfalcon » 26.04.2005 14:02
Und die -128 ? ICh kapier das irgendwie nicht... Benutze ich die falschen Variabelntypen, oder an was liegt das?
dige
Beiträge: 1239 Registriert: 08.09.2004 08:53
Beitrag
von dige » 26.04.2005 14:10
Ganz einfach, PB verwendet Signierte Datentype ... also für den Typ
Byte zum Bsp.: -128 ... +128.
So erhälst Du den korrekten Wert: (Ergebnis mit &$FF verknüpfen)
"Papa, ich laufe schneller - dann ist es nicht so weit."
hardfalcon
Beiträge: 3447 Registriert: 29.08.2004 20:46
Beitrag
von hardfalcon » 26.04.2005 14:12
Danke, ich werd mal versuchen, das "&$FF" zu kapieren... Sollte ja möglich sein.... Vielen Dank für die schnelle Antwort!
hardfalcon
Beiträge: 3447 Registriert: 29.08.2004 20:46
Beitrag
von hardfalcon » 26.04.2005 14:20
Ich glaube, ich habs halbwegs kapiert... Dann könnte ich ja anstelle von
auch eine der folgenden Möglichkeiten nehmen, oder ?
Code: Alles auswählen
& 255
+ $100 ;$100 ist die Hexadezimale Version von 25[b]6[/b]
+ 256
cya
Pascal
Laurin
Beiträge: 1639 Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0
Beitrag
von Laurin » 26.04.2005 14:44
hardfalcon hat geschrieben: Ich glaube, ich habs halbwegs kapiert... Dann könnte ich ja anstelle von
auch eine der folgenden Möglichkeiten nehmen, oder ?
Code: Alles auswählen
& 255
+ $100 ;$100 ist die Hexadezimale Version von 25[b]6[/b]
+ 256
cya
Pascal
Ja, nein, nein.
& != +
Das heißt soviel, wie & ist nicht +.
Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
hardfalcon
Beiträge: 3447 Registriert: 29.08.2004 20:46
Beitrag
von hardfalcon » 26.04.2005 15:05
Achja, bei & werden jeweils die beiden zusammengehörenden Bits der beiden Variabeln addiert, bei + wird einfach blind dazugerechnet. Danke!