Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hibernate und Standby erkennen (https://www.delphipraxis.net/81507-hibernate-und-standby-erkennen.html)

sar3th 20. Dez 2010 00:05

AW: Hibernate und Standby erkennen
 
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.

Der_Ventilator 20. Dez 2010 12:24

AW: Hibernate und Standby erkennen
 
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?

Cylence 20. Dez 2010 12:42

AW: Hibernate und Standby erkennen
 
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

mm1256 22. Jul 2016 09:15

AW: Hibernate und Standby erkennen
 
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?

Der schöne Günther 22. Jul 2016 09:32

AW: Hibernate und Standby erkennen
 
Ohne es je gemacht zu haben, ich würde sagen so ist es schon zu spät. Da ist die Entscheidung sich schlafen zu legen schon gefallen.

Du musst vorher mit SetThreadExecutionState(..) festlegen dass sich das System bitte nicht schlafen legt bis du es wieder erlaubst.

Sir Rufo 22. Jul 2016 09:39

AW: Hibernate und Standby erkennen
 
Ab Vista muss man mit
Delphi-Quellcode:
SetThreadExecutionState
arbeiten

https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx

t.roller 22. Jul 2016 10:30

AW: Hibernate und Standby erkennen
 
Ab WIN7: PowerCreateRequest

Der schöne Günther 22. Jul 2016 10:42

AW: Hibernate und Standby erkennen
 
Zitat:

Zitat von t.roller (Beitrag 1343182)

Wenn ich das richtig verstehe geht es da um "Connected Standby", ein Feature das (soweit ich weiß) nur ziemlich neue Mobilgeräte haben. Damit bittet eine Anwendung, auch im Standby weiterlaufen zu dürfen. Aber wie lange sie das darf entscheidet das Betriebssystem.

Vielleicht liege ich auch daneben.

mm1256 22. Jul 2016 10:59

AW: Hibernate und Standby erkennen
 
Vielen Dank für die Antworten!

Mann oh Mann ist das wieder eine komplizierte Sache. Ich hoffte schon, das (Programmierer-)Leben könnte ausnahmsweise auch mal freundlich zu einem sein. Vielleicht (sehr wahrscheinlich sogar) habe ich mich auch falsch bzw. unvollständig ausgedrückt, denn so richtig "komplett" verhindern will ich Hibernate und Standby nicht. Es geht um folgendes:

Vorhanden ist eine MDI-Anwendung die eine Client-Server-Datenbank verwendet. Was machen die Kunden? Sie haben mehrere MDI's geöffnet, und womöglich noch ein modales Fenster, das von einem MDI-Fenster aus geöffnet wurde. Dann ist Mittagspause, und keiner schert sich darum, wenigstens einen laufenden Editiervorgang zu benden, bevor man den Arbeitsplatz verlässt. Da kann man predigen was man will :cyclops:

Wenn sie dann von der Mittagspause zurück kommen und der PC ist im Standby....ist natürlich die Verbindung zum DB-Server abgebrochen. Nun kann ich ja nicht bei jedem Editiervorgang oder Fensterwechsel (MDIChildCount > 0) usw. mit SetThreadExecutionState regieren, das wäre overkill.

Wenn bei PBT_APMSUSPEND MDIChildCount 0 ist, dann schließe ich einfach die DB-Verbindung und gut isses, aber was tun wenn MDICHildCount > 0 ist, und noch modale Fenster offen sind? Ich denke, da muss ich jetzt ansetzen, weil mit SetThreadExecutionState komme ich wohl nicht weiter. Es sei denn, jemand hätte eine geniale Idee?

Neutral General 22. Jul 2016 12:53

AW: Hibernate und Standby erkennen
 
Ja gut aber WAS willst du denn machen? Wenn ein MDI-Child offen ist willst du Standby nicht verhindern, aber du willst auch kein Standby haben. :gruebel: Du musst dich für eins entscheiden.
Oder hoffst du auf eine Datenbankverbindung die den Standby überlebt? Keine Ahnung ob sowas geht, aber darauf würde ich nicht wetten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 Uhr.
Seite 2 von 3     12 3      

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