Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Power-Status des Computers ermitteln? (https://www.delphipraxis.net/21563-power-status-des-computers-ermitteln.html)

joe666sa 4. Mai 2004 21:29


Power-Status des Computers ermitteln?
 
Hab diese Lösung zur realisierung gefunden.

Code:
procedure GetStatus;
var SystemPowerStatus: TSystemPowerStatus;
begin

  GetSystemPowerStatus(SystemPowerStatus);
  with SystemPowerStatus do begin
  // Wird das System mit Wechselstrom oder Akku betrieben ?
    case ACLineStatus of
      0: Label1.Caption := 'System wird mit Akku betrieben';
      1: Label1.Caption := 'System wird mit Wechselstrom betrieben';
      else Label1.Caption := 'Unbekannter Status';
    end;

    // Ladezustand der Batterie
    case BatteryFlag of
      1 : Label2.Caption := 'Hoher Ladezustand';
      2 : Label2.Caption := 'Niedriger Ladezustand';
      4 : Label2.Caption := 'Kritischer Ladezustand';
      8 : Label2.Caption := 'Die Batterie wird geladen';
      128: Label2.Caption := 'Es existiert keine System-Batterie';
      255: Label2.Caption := 'Unbekannter Status';
    end;

    // Ladezustand in Prozent
    if BatteryLifePercent <> 255 then
      Label3.Caption := IntToStr(BatteryLifePercent) + ' %'
    else
      Label3.Caption := 'Unbekannter Status';
  end;
end;
Nur beim Compeilieren des codes bekomme ich immer folgende fehlermeldungen.

[Error] Unit1.pas(34): Undeclared identifier: 'Label1'
[Error] Unit1.pas(35): Missing operator or semicolon
[Error] Unit1.pas(36): Missing operator or semicolon
[Error] Unit1.pas(41): Undeclared identifier: 'Label2'
[Error] Unit1.pas(42): Missing operator or semicolon
[Error] Unit1.pas(43): Missing operator or semicolon
[Error] Unit1.pas(44): Missing operator or semicolon
[Error] Unit1.pas(45): Missing operator or semicolon
[Error] Unit1.pas(46): Missing operator or semicolon
[Error] Unit1.pas(51): Undeclared identifier: 'Label3'
[Error] Unit1.pas(53): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'


Esetze ich die label mit showmessage dann gehts.

Und hat irgend wer noch mehr infos was ich da alles auslesen kann.

Mfg joe666sa

fkerber 4. Mai 2004 21:31

Re: Power-Status des Computers ermitteln?
 
Hi!

Hast du auch 3 Labels auf deine Form gezogen?


Ciao fkerber

Christian Seehase 4. Mai 2004 21:33

Re: Power-Status des Computers ermitteln?
 
Moin Joe,

schau Dir doch einfach im PSDK oder auf MSDN mal die Dokumentation zu MSDN-Library durchsuchenSYSTEM_POWER_STATUS an.

fkerber 4. Mai 2004 21:35

Re: Power-Status des Computers ermitteln?
 
Hi!

@Christian:
Die Funktion ist Ok, er muss nur 3 Labels aufs Form ziehen, dann geht es fehlerfrei.


Ciao fkerber

Matze 4. Mai 2004 21:35

Re: Power-Status des Computers ermitteln?
 
Binde diese procedur unter private ein, oder schreibe einfach immer

Delphi-Quellcode:
Form1.Label1.Caption := ...
Aber ich kann dir auch die komplette Unit zeigen, falls du das möchtest. ;)

Matze 4. Mai 2004 21:36

Re: Power-Status des Computers ermitteln?
 
Ach, hier haste es:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure GetStatus;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.GetStatus;
var SystemPowerStatus: TSystemPowerStatus;
begin

  GetSystemPowerStatus(SystemPowerStatus);
  with SystemPowerStatus do begin
  // Wird das System mit Wechselstrom oder Akku betrieben ? 
    case ACLineStatus of
      0: Label1.Caption := 'System wird mit Akku betrieben';
      1: Label1.Caption := 'System wird mit Wechselstrom betrieben';
      else Label1.Caption := 'Unbekannter Status';
    end;

    // Ladezustand der Batterie
    case BatteryFlag of
      1 : Label2.Caption := 'Hoher Ladezustand';
      2 : Label2.Caption := 'Niedriger Ladezustand';
      4 : Label2.Caption := 'Kritischer Ladezustand';
      8 : Label2.Caption := 'Die Batterie wird geladen';
      128: Label2.Caption := 'Es existiert keine System-Batterie';
      255: Label2.Caption := 'Unbekannter Status';
    end;

    // Ladezustand in Prozent
    if BatteryLifePercent <> 255 then
      Label3.Caption := IntToStr(BatteryLifePercent) + ' %'
    else
      Label3.Caption := 'Unbekannter Status';
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetStatus;
end;

Christian Seehase 4. Mai 2004 21:41

Re: Power-Status des Computers ermitteln?
 
Moin fkerber,

die von der Funktion genutzte Struktur hat aber noch mehr Felder, und die eigentliche Frage lautete ja

Zitat:

Zitat von joe666sa
Und hat irgend wer noch mehr infos was ich da alles auslesen kann.

;-)

fkerber 4. Mai 2004 21:43

Re: Power-Status des Computers ermitteln?
 
Hi!

Oh, sorry, muss ich überlesen haben :oops:

Hatte nur die Fehler im Auge.


Ciao fkerber

Matze 4. Mai 2004 21:44

Re: Power-Status des Computers ermitteln?
 
Ich auch :oops: Gute Nacht! :lol:

NicoDE 5. Mai 2004 01:46

Re: Power-Status des Computers ermitteln?
 
Zitat:

Zitat von joe666sa
Code:
    // Ladezustand der Batterie
    case BatteryFlag of
      1 : Label2.Caption := 'Hoher Ladezustand';
      2 : Label2.Caption := 'Niedriger Ladezustand';
      4 : Label2.Caption := 'Kritischer Ladezustand';
      8 : Label2.Caption := 'Die Batterie wird geladen';
      128: Label2.Caption := 'Es existiert keine System-Batterie';
      255: Label2.Caption := 'Unbekannter Status';
    end;

Einige Flags können auch gleichzeitig vorkommen (zum Beipiel 'Ladezustand' und 'wird geladen')
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SystemPowerStatus: TSystemPowerStatus;
  Text: string;
begin
  if GetSystemPowerStatus(SystemPowerStatus) then
    with SystemPowerStatus do
    begin
      // Wird das System mit Wechselstrom oder Akku betrieben ?
      case ACLineStatus of
        0: Text := 'System wird mit Akku betrieben';
        1: Text := 'System wird mit Wechselstrom betrieben';
      else
        Text := 'Unbekannter Status';
      end;
      Label1.Caption := Text;

      // Ladezustand der Batterie
      if (BatteryFlag = 255) then
        Text := 'Unbekannter Status'
      else if (BatteryFlag and 128 = 128) then
        Text := 'Es existiert keine System-Batterie'
      else
      begin
        case (BatteryFlag and (1 or 2 or 4)) of
          1: Text := 'Hoher Ladezustand';
          2: Text := 'Niedriger Ladezustand';
          4: Text := 'Kritischer Ladezustand';
        else
          Text := 'Unbekannter Ladezustand';
        end;
        if (BatteryFlag and 8 = 8) then
          Text := Text + ' (Die Batterie wird geladen)';
      end;
      Label2.Caption := Text;

      // Ladezustand in Prozent
      if (BatteryLifePercent <> 255) then
        Text := IntToStr(BatteryLifePercent) + ' %'
      else
        Text := 'Unbekannter Status';
      Label3.Caption := Text;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 1 von 2  1 2      

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