Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Komponente zum abrufen des Batteriestatus (https://www.delphipraxis.net/178270-komponente-zum-abrufen-des-batteriestatus.html)

Dennis07 29. Dez 2013 05:20

Komponente zum abrufen des Batteriestatus
 
Moin,
wollt mal fragen, ob es außer Zylbattery noch (kostenlose) Komponenten gibt, mit denen man den Akkustatus abfragen kann (ja, AbfComponents Library hat noch sowas, ist aber leider nicht kostenlos).
Habe mir gerade XE5 Pro bestellt, weshalb mir das Geld zur Zeit (offensichtlicher weise) nicht so locker sitzt, als dass ich noch großartige Ausgaben deshalb tätigen will.
Vielleicht hat ja einer ovn euch ne Idee, oder kennt noch eine (kostenlose) Komponentensammlung, die das kann.

MFG
Dennis

jaenicke 29. Dez 2013 07:14

AW: Komponente zum abrufen des Batteriestatus
 
Eine Komponente ist dafür etwas übertrieben, es steckt schließlich im Wesentlichen nur ein API Aufruf von GetSystemPowerStatus dahinter:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

ASM 29. Dez 2013 10:27

AW: Komponente zum abrufen des Batteriestatus
 
Siehe auch hier (im bereits genannten Sinne, d.h. bedarf keiner Komponente)

Dennis07 30. Dez 2013 00:14

AW: Komponente zum abrufen des Batteriestatus
 
Scheint nicht (richtig) zu funktionieren (bei mir zumindest).
Dort zeigt er nämlich immer nur "N/A" und "Healthy" an, obwohl ich ein Notebook habe und den Stecker draussen bzw. drinnen.... (PS: zZ arbeite ich noch unter Turbo-Delphi 06)

MFG

himitsu 30. Dez 2013 01:48

AW: Komponente zum abrufen des Batteriestatus
 
Zitat:

Zitat von Dennis07 (Beitrag 1241411)
Scheint nicht (richtig) zu funktionieren (bei mir zumindest).

Der Code aus
Zitat:

Zitat von ASM (Beitrag 1241342)
Siehe auch hier

ist auch Schrott.

Wie man da
Zitat:

Zitat von jaenicke (Beitrag 1241337)
Eine Komponente ist dafür etwas übertrieben, es steckt schließlich im Wesentlichen nur ein API Aufruf von GetSystemPowerStatus dahinter:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

lesen kann, hat die API ein Result, das man gefälligst auswerten sollte.

Vielleicht verrät die Funktion ja, ob/warum sie "kein" Ergebnis liefert.

Furtbichler 30. Dez 2013 07:33

AW: Komponente zum abrufen des Batteriestatus
 
Zitat:

Zitat von himitsu (Beitrag 1241415)
Der Code aus...ist auch Schrott.

Aber es funktioniert soweit. Schrott ist trotzdem richtig, weil -wie Du schon sagtest- die Fehlerbehandlung fehlt.
Zitat:

Zitat von Dennis07 (Beitrag 1241411)
Dort zeigt er nämlich immer nur "N/A" und "Healthy" an, obwohl ich ein Notebook habe und den Stecker draussen bzw. drinnen....

Na, dann zeigt doch mal, wo 'N/A' und 'Healthy' angezeigt wird. Bei mir wird nämlich auch irgendwo 'N/A' angezeigt, allerdings bei der Anzeige der Batterielebensdauer. Die kann das Teil nicht liefern. Der Rest funktioniert. Ach, und der Code funktioniert natürlich auch mit D6, wobei mir 'Turbo Delphi 06' auch neu ist.

jaenicke 30. Dez 2013 11:41

AW: Komponente zum abrufen des Batteriestatus
 
Ich habe mal eine kleine Unit dafür geschrieben. Fast nicht getestet, die Lebensdauer stimmt wohl noch nicht, ich habe gerade keine Zeit nachzuschauen. Das mache ich heute Abend, dann kommt noch ein Update.

// EDIT: aktuelle Version siehe weiter unten:
http://www.delphipraxis.net/178270-k...ml#post1241466

Zum Testen einfach:
Delphi-Quellcode:
uses
  PowerStatusInfo;

  ShowMessage(TPowerStatusInfo.StatusDescription);
Bei Delphi 2006 sollte das glaube ich alles schon so gehen.

Furtbichler 30. Dez 2013 12:41

AW: Komponente zum abrufen des Batteriestatus
 
Achtung, dezent OT:
Ich habe mir gerade die Doku auf MSN durchgelesen und bin nun verunsichert. Seeehr verunsichert. ;-)
Zitat:

Zitat von MSN
SYSTEM_POWER_STATUS structure

Contains information about the power status of the system.
Syntax
Code:
typedef struct _SYSTEM_POWER_STATUS {
  BYTE ACLineStatus;
  BYTE BatteryFlag;
  BYTE BatteryLifePercent;
  BYTE Reserved1;
  DWORD BatteryLifeTime;
  DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
...
BatteryLifeTime
The number of seconds of battery life remaining, or –1 if remaining seconds are unknown.

BatteryFullLifeTime
The number of seconds of battery life when at full charge, or –1 if full battery lifetime is unknown.

Es geht um die Deklaration von BatteryLifeTime und BatteryFullLifeTime (DWORD). Und ein DWORD ist also ein unsigned 32-bit Integer im Bereich 0 bis 4294967295.
Wie schafft die Funktion es dann, diesen beiden Feldern den Wert -1 zuzuweisen? :gruebel:
:mrgreen:

Ist mir nur so aufgefallen.

jaenicke 30. Dez 2013 14:04

AW: Komponente zum abrufen des Batteriestatus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da wird DWORD(-1), also $FFFFFFFF, zurückgegeben, der Wert ist nur nicht so einfach zu schreiben. :-D

Hier die fertig funktionierende Version:
Anhang 40448

Dennis07 30. Dez 2013 22:42

AW: Komponente zum abrufen des Batteriestatus
 
[QUOTE=Furtbichler;1241426]
Zitat:

Zitat von himitsu (Beitrag 1241415)
Ach, und der Code funktioniert natürlich auch mit D6, wobei mir 'Turbo Delphi 06' auch neu ist.

In dem fall Bedeutet "06" nicht "6", sondern ist die Abkürzung für 2006...

@Sebastian: Keine Ahrnung, wovon ihr redet, aber das kommt wohl noch (man lernt nie aus^^). Hab dir ja schon geschrieben, dass DXE5 jetzt drauf ist....


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz