AGB  ·  Datenschutz  ·  Impressum  







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

Hibernate und Standby erkennen

Ein Thema von himitsu · begonnen am 28. Nov 2006 · letzter Beitrag vom 23. Jul 2016
Antwort Antwort
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#1

AW: Hibernate und Standby erkennen

  Alt 14. Nov 2010, 17:43
Wie sieht es denn z.Z. aus? Läuft der oben vor 3 Jahren genannte Code immernoch weder unter Vista noch Windows 7? Gibt es alternativen?
Codito, ergo sum. - I code therefore I am
  Mit Zitat antworten Zitat
sar3th

Registriert seit: 14. Dez 2010
3 Beiträge
 
#2

AW: Hibernate und Standby erkennen

  Alt 17. Dez 2010, 13:35
Laut MSDN gibt es jetzt PBT_APMSUSPEND. In meinen Tests auf Windows 7 hat das auch zuverlässig funktioniert
procedure WMPowerBroadcast(var Msg: TMessage); message WM_POWERBROADCAST;
Delphi-Quellcode:
//Beispiel-Routine
procedure TfrmMain.WMPowerBroadcast(var Msg: TMessage);
begin
  case Msg.wParam of
    PBT_APMSUSPEND:
    begin
      //System wird in einen Energiesparmodus versetzt
    end;
    PBT_APMRESUMESUSPEND:
    begin
      //System ist wieder aufgewacht
    end;
    PBT_APMRESUMEAUTOMATIC:
    begin
      //Nach dem Aufwachen wurde eine Benutzeraktivität festgestellt
    end;
  end;
end;
Allerdings hab ich nichts gefunden um festzustellen, ob das System in den Ruhezustand oder Standby wechselt. APMSUSPEND kommt bei beiden und gibt laut MSDN keine Auskunft darüber.
Hat jemand eine Idee wie man das rausfinden kann?
  Mit Zitat antworten Zitat
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Hibernate und Standby erkennen

  Alt 17. Dez 2010, 15:21
Ist das wichtig, ob Standby oder Ruhezustand? Windows 7 wechselt in der Standardeinstellung "Energie sparen" in den Ruhezustand UND Standbymodus gleichzeitig. Und wacht dann aus dem Standby oder -wenn zwischendrin der Strom weg war- aus dem Ruhezustand wieder auf.
Codito, ergo sum. - I code therefore I am
  Mit Zitat antworten Zitat
sar3th

Registriert seit: 14. Dez 2010
3 Beiträge
 
#4

AW: Hibernate und Standby erkennen

  Alt 20. Dez 2010, 00:05
In dem Fall ist es gewünscht, da ich gerne ein kleines Log meiner Batterie und Rechnernutzung erstellen würde, um das im Nachhinein auswerten zu können (also ein "Batterie-Benchmark"). Ich aktiviere den Ruhezustand/Standby via Startmenü oder Energiespartaste manuell, in dem Fall greift die Automatik von Windows 7 sowieso nicht. Das aber jedes mal dem Programm von Hand mitzuteilen wäre extrem lästig, deswegen dieser Ansatz.
  Mit Zitat antworten Zitat
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Hibernate und Standby erkennen

  Alt 20. Dez 2010, 12:24
Wenn das Programm nur für dich ist, könntest du den Ruhezustand oder Standby über das Programm selbst aufrufen.
Vielleicht mit zwei Desktopverknüpfungen, die mittels Parameter dem Programm sagen, den Log zu starten und den Rechner in den gewünschten Modus zu versetzen.

Aber andererseits ist es bestimmt möglich, zu erkennen, welcher Modus aktiv war (vielleicht aus der Ereignisanzeige von Windows?).

Wie läuft das eigentlich bei dem hybriden Modus. Wenn mein Laptop in diesem ist, wann entscheidet Windows den Standby aufzugeben und in den Ruhezustand zu wechseln? Wenn die Batterie leer ist oder schon vorher, wenn "abzusehen" ist, dass in nächster Zeit ich das Laptop nicht mehr anschalten werde? Oder ist das erst 3 Tage in der Tasche im Standby und hat dann keine Energie mehr?
Codito, ergo sum. - I code therefore I am
  Mit Zitat antworten Zitat
Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Hibernate und Standby erkennen

  Alt 20. Dez 2010, 12:42
hi,

ich verwende folgende kleine freie komponente, mit der kann man auch shutdowns verhindern, aber es hat events für wakeupfromhibernate und wakeupfromstandby...

Hier gibts das teil:

http://www.delphipages.com/comp/pwrsave-4884.html

gruß

tom
Tom
Just DO it
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: Hibernate und Standby erkennen

  Alt 22. Jul 2016, 09:15
Hallo,

jetzt habe ich auch das Problem, dass ich Energiesparmodus und Ruhezustand verhindern muss. So funktioniert das leider nicht:

Delphi-Quellcode:
procedure TForm1.WMPowerBroadcast(var Msg: TMessage);
var
  t: TextFile;
begin
  case Msg.wParam of
    PBT_APMSUSPEND:
      begin // System wird in einen Energiesparmodus versetzt
        Msg.Result := BROADCAST_QUERY_DENY;
        AssignFile(t,'D:\BROADCAST_QUERY_DENY.TXT');
        Rewrite(t);
        WriteLn(t,TimeToStr(Now)+' ==> Msg.wParam.BROADCAST_QUERY_DENY');
        CloseFile(t);
      end;
    PBT_APMRESUMESUSPEND:
      begin //System ist wieder aufgewacht
        ShowMessage('Energiesparmodus: Hurrraaa wir leben wieder');
      end;
    PBT_APMRESUMEAUTOMATIC:
      begin //Nach dem Aufwachen wurde eine Benutzeraktivität festgestellt
        ShowMessage('Energiesparmodus: ...und aktiv sind wir auch schon wieder ;-)');
      end;
  end;
end;
ALle 3 Messages werden gefeuert, aber Msg.Result := BROADCAST_QUERY_DENY bewirkt nichts. Wo ist da der Haken?
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  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 18:14 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