![]() |
Hat's einen Akku?
Hallo,
wahrscheinlich habe ich es ja nur übersehen, aber ich finde es einfach nicht! Wie kann man möglichst einfach und kurz (!!!) per Delphi 7 rauskriegen, ob das Gerät vor einem einen Akku hat oder nicht? Ich meine das ganz allgemein!!! Bsp.: 1.Wenn der Notebook-Akku draussen ist und das Gerät per Wechselstrom arbeitet, soll auch angezeigt werden, dass kein Akku da ist. 2. Hängt der Laptop am der Strom und ist ein Akku drin, soll auch angezeigt werden, dass der einen Akku hat. Usw. (Man kann die Anzahl der vorhandenen Batterien testen - PSP_DEVICE_INTERFACE_DETAIL_DATA. Das ist aber ein ziemlicher Aufwand. Geht das nicht auch kürzer?) Gruß Mattze |
AW: Hat's einen Akku?
Hallo,
Habe kurz gegoogelt, vielleicht hilft das da: ![]() |
AW: Hat's einen Akku?
Hi!
Schau Dir mal tJvComputerInfoEx aus den Jedis an. Diese hat unter APM diverse Batterie-Eigenschaften, neben Infos zum Ladestatus auch "BatteryFlag" Vielleicht kannst Du damit etwas anfangen. Gruß Guido R. |
AW: Hat's einen Akku?
Ich würde es mit SMBios probieren konkret mit folgendem Beispiel:
![]() Viel Erfolg |
AW: Hat's einen Akku?
Code:
// WinApi command to get the status of the battery.
if GetSystemPowerStatus(pSysPowerStatus) then begin // get the line status case pSysPowerStatus.ACLineStatus of 0 : s:='Offline'; 1 : s:='Online'; 255 : s:='Unknown status.'; end; label1.caption:='AC power status: '+s; |
AW: Hat's einen Akku?
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 |
AW: Hat's einen Akku?
Zitat:
![]() |
AW: Hat's einen Akku?
Hallo,
habe ich doch geschrieben! Trotzdem danke! Gruß Mattze |
AW: Hat's einen Akku?
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. |
AW: Hat's einen Akku?
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 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