AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Komponente zum abrufen des Batteriestatus
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente zum abrufen des Batteriestatus

Ein Thema von Dennis07 · begonnen am 29. Dez 2013 · letzter Beitrag vom 23. Apr 2017
Antwort Antwort
Seite 1 von 3  1 23      
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
488 Beiträge
 
Delphi 11 Alexandria
 
#1

Komponente zum abrufen des Batteriestatus

  Alt 29. Dez 2013, 06:20
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
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Komponente zum abrufen des Batteriestatus

  Alt 29. Dez 2013, 08:14
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
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Komponente zum abrufen des Batteriestatus

  Alt 29. Dez 2013, 11:27
Siehe auch hier (im bereits genannten Sinne, d.h. bedarf keiner Komponente)
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
488 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Komponente zum abrufen des Batteriestatus

  Alt 30. Dez 2013, 01:14
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
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Komponente zum abrufen des Batteriestatus

  Alt 30. Dez 2013, 02:48
Scheint nicht (richtig) zu funktionieren (bei mir zumindest).
Der Code aus
ist auch Schrott.

Wie man da
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: Komponente zum abrufen des Batteriestatus

  Alt 30. Dez 2013, 08:33
Der Code aus...ist auch Schrott.
Aber es funktioniert soweit. Schrott ist trotzdem richtig, weil -wie Du schon sagtest- die Fehlerbehandlung fehlt.
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Komponente zum abrufen des Batteriestatus

  Alt 30. Dez 2013, 12:41
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.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (30. Dez 2013 um 15:05 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#8

AW: Komponente zum abrufen des Batteriestatus

  Alt 30. Dez 2013, 13:41
Achtung, dezent OT:
Ich habe mir gerade die Doku auf MSN durchgelesen und bin nun verunsichert. Seeehr verunsichert.
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?


Ist mir nur so aufgefallen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Komponente zum abrufen des Batteriestatus

  Alt 30. Dez 2013, 15:04
Da wird DWORD(-1), also $FFFFFFFF, zurückgegeben, der Wert ist nur nicht so einfach zu schreiben.

Hier die fertig funktionierende Version:
PowerStatusInfo.pas
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
488 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Komponente zum abrufen des Batteriestatus

  Alt 30. Dez 2013, 23:42
[QUOTE=Furtbichler;1241426]
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....
Dennis
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 Uhr.
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