AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Rechner soll an bleiben nach Aufwachen mit WaitableTimer
Thema durchsuchen
Ansicht
Themen-Optionen

Rechner soll an bleiben nach Aufwachen mit WaitableTimer

Offene Frage von "kriegste"
Ein Thema von kriegste · begonnen am 7. Mär 2010 · letzter Beitrag vom 9. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
kriegste

Registriert seit: 9. Jul 2006
25 Beiträge
 
#1

Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 7. Mär 2010, 17:29
Hallo,

ich lasse meinen PC in den Standby-Modus entschlummern und setze vorher einen WaitableTimer, um ihn zu einem bestimmten Zeitpunkt wieder aufzuwecken. Das klappt auch, allerdings nur bis zu diesem Punkt. Erfolgt keine Benutzer-Interaktion (Tastendruck, Mausbewegung/-klick), fällt Windows (sowohl XP als auch 7) nach etwa drei Minuten wieder zurück in den Standby-Modus. Der Rechner soll aber laufen, und zwar so, wie vor dem Einschlafen, wo er ja auch nicht automatisch einschläft (ohne zutun meines Programms).

Wie kriege ich das korrekte Verhalten hin?

SetThreadExecutionState(ES_SYSTEM_REQUIRED or ES_CONTINUOUS);
ist aus verschiedenen Gründen keine Lösung

Simulieren eines Tastendrucks oder einer Mausbewegung per keybd_event oder mouse_event brachten leider keine Änderung.

Danke für eure Hilfe.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 7. Mär 2010, 17:39
Was sollen das denn für verschiedene Gründe sein?

http://www.delphipraxis.net/internal...103893#1103893
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
kriegste

Registriert seit: 9. Jul 2006
25 Beiträge
 
#3

Re: Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 7. Mär 2010, 17:47
Naja, es soll alles automatisch funktionieren. Wenn ich SetThreadExecutionState(ES_SYSTEM_REQUIRED or ES_CONTINUOUS) verwende, darf sich das Programm nicht automatisch beenden. Sondern jemand muss es von Hand schließen (da sonst der Rechner wieder herunterfährt).

Lässt man das Programm unbeendet im Hintergrund, wundert man sich, warum der PC gar nicht mehr in den Standbymodus will.
  Mit Zitat antworten Zitat
kriegste

Registriert seit: 9. Jul 2006
25 Beiträge
 
#4

Re: Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 8. Mär 2010, 23:44
Keiner eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von Cylence
Cylence

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

Re: Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 9. Mär 2010, 08:34
Hi,

ich hab das auch, kommt nur nicht bei allen Systemen vor, aber ich habs so gelöst, jetzt ist mein PC mein Wecker

Delphi-Quellcode:
public
  procedure WMPowerBroadcast(var MyMessage: TMessage); message WM_POWERBROADCAST;

.
.
.



procedure TMRMaster.WMPowerBroadcast(var MyMessage: TMessage);
begin
  if MyMessage.Msg = WM_POWERBROADCAST then begin
    if (MyMessage.WParam = PBT_APMQUERYSUSPEND) or (MyMessage.WParam = PBT_APMQUERYSTANDBY)
    then begin
      // windows wants to go into standby or hibernation mode
      // Hier hin, was getan werden muss, bevor Windows in den Standby darf,
      // z.B. Netzwerk- oder Datenbankverbindungen trennen, Timer abstellen, etc.
               

      MyMessage.Result := 1; // allow standby/hibernation
      // MyMessage.Result := BROADCAST_QUERY_DENY; // deny standby/hibernation
    end else if (MyMessage.WParam = PBT_APMRESUMEAUTOMATIC) or (MyMessage.WParam = PBT_APMRESUMECRITICAL) or
                (MyMessage.WParam = PBT_APMRESUMESUSPEND) or (MyMessage.WParam = PBT_APMRESUMESTANDBY)
    then begin
      // windows returns from standby or hibernation
      // Hier z.B. Verbindungen wiederherstellen
      // und Windows sagen das es benötigt wird und sich nicht automatisch ohne Usereingabe wieder ausschaltet
      SetThreadExecutionState(ES_DISPLAY_REQUIRED or ES_SYSTEM_REQUIRED or ES_CONTINUOUS);
      CancelWaitableTimer(htimer);

    end;
  end;
end;
ich denke das sollte alles ziemlich klar sein, hoff ich hab dir geholfen hab selbst ewig danach gesucht

Gruß

Cylence
Tom
Just DO it
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 9. Mär 2010, 08:35
Zitat von kriegste:
darf sich das Programm nicht automatisch beenden. Sondern jemand muss es von Hand schließen (da sonst der Rechner wieder herunterfährt).
Wenn dein Programm aus ist, warum darf dann der PC nicht in den Standby?

Zitat von kriegste:
Lässt man das Programm unbeendet im Hintergrund, wundert man sich, warum der PC gar nicht mehr in den Standbymodus will.
Wenn dein Programm fertig mit der Aktion ist, bzw. es ihm egal ist, wenn ob der PC in den Stndby geht, dann setzt es halt den Status von SetThreadExecutionState wieder auf normal zurück.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
kriegste

Registriert seit: 9. Jul 2006
25 Beiträge
 
#7

Re: Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 9. Mär 2010, 12:03
@Cylence

Das ist genau die Lösung, die den PC blockiert...

Mein Programm ist nur der Wecker. Der Grund, warum der PC an gehen soll, sind andere Programme. Mein Programm soll weiterlaufen und keine Interaktion benötigen. Trotzdem soll der PC a) nicht herunterfahren, wenn er geweckt wurde und noch niemand die Maus bewegt hat und b) aber trotzdem vom Benutzer in den Standby geschickt werden können, ohne, das mein Programm das blockiert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 9. Mär 2010, 12:09
Dann schalte das Timeout für den automatischen Standby ab und laß dein Programm nichts machen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
kriegste

Registriert seit: 9. Jul 2006
25 Beiträge
 
#9

Re: Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 9. Mär 2010, 12:18
Und genau das war meine Frage. Wie verstelle ich den Timeout für den automatischen Standby?

PS: Und ich meine natürlich nicht den in der Systemsteuerung. Der steht schon auf "Nie"...
  Mit Zitat antworten Zitat
Benutzerbild von Cylence
Cylence

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

Re: Rechner soll an bleiben nach Aufwachen mit WaitableTimer

  Alt 9. Mär 2010, 13:09
Hi,

also mein Programm in dem das so eingebaut ist, verhindert nicht im geringsten den Ruhezustand nach dem wiederhochfahren mit automatischem Timer. Nur das automatische Wieder runterfahren ohne mausbewegung vom user wird verhindert, danach kann der user immer noch wie gewohnt Ruhezustand oder Standby machen, genauso auch aus meinem Programm geht ruhezustand und Standby. Daher denke ich dein problem kommt nicht von der funktion her. Weil bei mir klappt das ja so ohne Probleme.

Gruß

Cylence
Tom
Just DO it
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:36 Uhr.
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