AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Akkumanagement (Notifications)

Ein Thema von himitsu · begonnen am 5. Feb 2024 · letzter Beitrag vom 13. Feb 2024
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

Akkumanagement (Notifications)

  Alt 5. Feb 2024, 13:36
Gab es nicht mal eine Message (Broadcast), wenn sich der Akkustand (Prozent) ändert?
Die Restzeit wird jedenfalls nur bei Änderung neu berechnet (durch Windows).
MSDN-Library durchsuchenGetSystenPowerStatus

Mir ist so, als hätte ich ich da früher z.B. ein WM_POWERBROADCAST empfangen.
Win7/Win10/Win11, auch ohne sich vorher für eine Notification registrieren zu müssen, oder sowas.

Bei Netzteil anstecken/abziehen da kommt was rein, aber nicht bei Änderungen den Akkus.
(bei Standby und Co kommen auch viele Messages nicht an, in neueren Windowsen, aber das ist ja dokumentiert)

Aktuell habe ich einen Timer, der das aktualisiert, aber mir war, als ginge das mal automatisch, bei Änderung.
Anhang: https://www.delphipraxis.net/214584-...ml#post1533022
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Feb 2024 um 14:15 Uhr)
  Mit Zitat antworten Zitat
Mantrid

Registriert seit: 6. Jun 2022
Ort: Deutschland
25 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Akkumanagement (Notifications)

  Alt 5. Feb 2024, 14:14
Hier sind noch Informationen https://learn.microsoft.com/de-de/wi...ry-information


Das geht über https://learn.microsoft.com/de-de/wi...eviceiocontrol

Laufzeit steht unter BatteryEstimatedTime


Wie man das aber genau programmiert, bin ich noch am testen, komme aber im Moment nicht weiter.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Akkumanagement (Notifications)

  Alt 5. Feb 2024, 14:53
Jupp, das Chaos der letzten Jahre mal bissl aufräumen ... wollte vor 'ner Weile ein/zwei Projekte machen, wo aber nichts so lief wie es sollte.
Drum versuche ich aktuell das Ganze in einer Test/Demo-App zum Laufen zu bringen und mal zusammenzufassen.


OK, bei IOCRL war ich jetzt noch garnicht vorbeigekommen.
Als Nächstes hatte ich einige Notifications geplant, wo man sich jeweils über GUIDs registriert. (wurde aber durch das Nicht-Aktualisierungsproblemchen aufgehalten)

Werde das IOCTL dann wohl aber erstmal angehn.
BATTERY_WAIT_STATUS und BATTERY_REPORTING_SCALE sieht aber so aus, wie im CallNrPowerInfo->Batter<State.

Aber das sind ja auch wieder "nur" Abfragen.
Was ich grade vermisse ist ja eine Notofocation, wo mir Windows sagt "Hey, die Batterie hat sich verändert ... schau dir mal die aktuellen Werte an" (anstatt da ständig mit einem Timer zu pollen)


Nervig war, dass ich zuletzt über paar Bugs in der alten WinAPI im Delphi stoperte, sowie dass Vieles einfach fehlt (und dann auch noch Schweigen oder gar Fehler in der Doku von Microsoft, beim Versuch so Einiges selbst nach Delphi zu übersetzen),
zuletzt dann die Hoffnung der neuen WinAPI, aber das sieht ja noch katastrophaler aus.
https://www.delphipraxis.net/214473-...vor-winmd.html


OHH, ein Problem mit großen Server-CPUs.

TThread.ProcessorCount sagt 32, aber eigentlich sind es 63 Kerne.
Und dann schlägt natürlich der Abruf der "ProcessorInfo" fehl, da der Array-Speicher zu gering reserviert wurde.




PS: Youtube im Firefox deaktiert die Monitor- und Standbytimeouts, siehe ExecutionState. (während der Wiedergabe)

Was mir auch noch aufgefallen war:
* im Taskmanager die %-Werte im Details-Tab stimmen oft garnicht (System ausgelastet, aber dort kein Prozess mit Auslastung zu sehn)
* auch stimmen oft die Werte unter Prozesse und Details nicht überein

* NtPowerInfo gibt mir die Frequenzen der Kerne (über WMI kommt man auch an sowas)
* aber im Taskmanager ... k.A. was der anzeigt ... hier z.B. unter "Leistung" oben rechts beim Namen 2.7 GHz, unten Basistakt 2,9 GHz (OK, WinServer2006 nennt es "Maximale Geschwindigkeit")
aber die großgeschriebene "aktuelle" Geschwindigkeit zeigt was an, das nichtmal annähernd dem ausProcessorInfo übereinstimmt (einzelner Kern, Minimal, Maximal, Durchschnitt oder sonstwas)


Die Laufzeit hab ich. Bei SystemPowerStatus sieht man auch das, was Windows überall anzeigt. (oben dei LifeTime)
OK, es stimmt nicht immer mit der Batterie überein (unten BatteryState), bzw. oben hängt etwas hinterher (aber egal, so lange es oben mit den Windows-Anzeigen korrespondiert)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Feb 2024 um 17:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Akkumanagement (Notifications)

  Alt 5. Feb 2024, 18:13
Für's DeviceIoControl mußt du dir erstmal über die SetupAPI den DeviceNamen für's CreateFile besorgen, um dessen Handle dann dafür nutzen zu können-

https://github.com/MicrosoftDocs/win...ery-devices.md
https://gist.github.com/ahawker/9715872

Schade, dass unser foreneigener SetupAPI-Guru schon vor vielen Jahren dahingeschieden ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Akkumanagement (Notifications)

  Alt 5. Feb 2024, 23:32
Hallo,
ev. das hier?

https://learn.microsoft.com/de-de/wi...ectedfrom=MSDN

oder eher das hier
https://www.codeproject.com/Articles...mputer-s-Power
Heiko

Geändert von hoika ( 5. Feb 2024 um 23:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Akkumanagement (Notifications)

  Alt 6. Feb 2024, 09:32
Zumindest das Log für PBT_POWERSETTINGCHANGE hatte ich schon drin.
RegisterPowerSettingNotification aber noch nicht implementiert.

Aber, wie gesagt, ich bin mir eigentlich fast sicher, früher in einem anderen Projekt, auch schonmal eine Message bekommen zu haben, wenn sich die Akku-Prozente ändern, auch ohne diese Registrierung.


IOCRL: Da Delphi keine "leeren" statischen Arrays kennt, ließ sich der Code anfangs nicht zum Laufen bringen, da SizeOf einen falschen anderen Wert bring, als die API verlangt.


Ich weiß grad garnicht, ob ich für codeproject.com ein Login hab, um mir die Demo mal anzusehn.
Angehängte Dateien
Dateityp: 7z PowerManagement.7z (80,7 KB, 2x aufgerufen)
Dateityp: 7z PowerManagement.exe.7z (797,7 KB, 2x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 6. Feb 2024 um 09:35 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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:35 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