AGB  ·  Datenschutz  ·  Impressum  







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

Hat's einen Akku?

Ein Thema von Mattze · begonnen am 8. Sep 2018 · letzter Beitrag vom 13. Sep 2018
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

AW: Hat's einen Akku?

  Alt 13. Sep 2018, 07:05
Hallo,

vielen Dank Euch allen.
Das BatteryFlag gibt es tatsächlich her. Ich hatte das nur übersehen!
Das kann nämlich noch einen Wert annehmen, den man aber nur selten sieht. Meistens nimmt man nur 1, 2, 4, 8 und 255. Es gibt aber noch 128 und mit diesem Wert wird genau das getan, was ich wollte. Wenn das so gesetzt ist, gibt es keine Batterie. Übrigens: Man denkt es, aber "SysPowerStatus.ACLineStatus" macht es offenbar nicht (bei Win10 jedenfalls).

Gruß
Mattze

Geändert von Mattze (13. Sep 2018 um 07:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#2

AW: Hat's einen Akku?

  Alt 13. Sep 2018, 13:52
Man denkt es, aber "SysPowerStatus.ACLineStatus" macht es offenbar nicht (bei Win10 jedenfalls).
Das ist ja auch der falsche für deinen Zweck. ACLineStatus gibt an, ob es grad am Netzteil hängt, was AUCH der Fall sein kann wenn es einen Akku hat und IMMER der Fall ist, wenn es keinen hat. Richtig wäre SysPowerStatus.BatteryFlag. Guckst du hier.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: Hat's einen Akku?

  Alt 13. Sep 2018, 14:08
Hallo,

habe ich doch geschrieben!
Trotzdem danke!

Gruß
Mattze
  Mit Zitat antworten Zitat
OLDIE1950

Registriert seit: 2. Jan 2018
22 Beiträge
 
#4

AW: Hat's einen Akku?

  Alt 13. Sep 2018, 16:26
Das folgende Progrämmchen zeigt den Status in der Titelzeile an:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

const
 GUID_ACDC_POWER_SOURCE: TGUID =
 '{5D3E9A59-E9D5-4B00-A6BD-FF34FF516548}';
 PBT_POWERSETTINGCHANGE = 32787;

type
  PPowerbroadcastSetting = ^TPowerbroadcastSetting;
  POWERBROADCAST_SETTING = packed record
    PowerSetting: TGUID;
    DataLength: DWord;
    Data: array[0..0] of Char;
  end;
  {$EXTERNALSYM POWERBROADCAST_SETTING}
  TPowerbroadcastSetting = POWERBROADCAST_SETTING;

type
  TForm1 = class(TForm)
    procedure PowerMessage(var msg: TMessage); message
    WM_POWERBROADCAST;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

function RegisterPowerSettingNotification(hRecipient: THandle;
         PowerSettingGuid: PGUID; Flags: DWORD): THandle; stdcall;
external 'user32.dll';
function UnregisterPowerSettingNotification(Handle: THandle): BOOL; stdcall;
external 'user32.dll';

var
  Form1: TForm1;
  psn: THandle;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  psn := RegisterPowerSettingNotification(Form1.Handle,
  @GUID_ACDC_POWER_SOURCE , 0);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   UnregisterPowerSettingNotification(psn);
end;

procedure TForm1.PowerMessage(var msg: TMessage);
var pb_setting: TPowerbroadcastSetting;
    buf: DWord;
begin
  if msg.WParam = PBT_POWERSETTINGCHANGE then
  begin
    pb_setting := PPowerbroadcastSetting(msg.LParam)^;
    if GUIDToString(pb_setting.PowerSetting) = GUIDToString(GUID_ACDC_POWER_SOURCE) then
    begin
      buf := 0;
      move(pb_setting.Data, buf, SizeOf(DWord));
      case buf of
        0: Caption:= 'Netzbetrieb';
        1: Caption:= 'Akkubetrieb';
        2: Caption:= 'USV-Betrieb';
      end;
    end;

  end;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Hat's einen Akku?

  Alt 13. Sep 2018, 18:31
Weil jemand das mit den "Werten" falsch versteht?

Es sind keine Werte, sondern Bits und Bit-Masken.

Bit 7 = keine Batterie
außer bei Bits 0-7 alle gesetzt = ungekannt

Bits 3 und 4 (also Wert 12) = Critical + Charging
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Sep 2018 um 18:33 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 10:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz