![]() |
OnBefore Standby -> aktion ausführen mit Vista SP1
hi all,
Delphi-Quellcode:
type
TForm1 = class(TForm) procedure WndProc(var MyMessage: TMessage); override; ..... procedure TForm1.WndProc(var MyMessage: TMessage); begin if MyMessage.Msg = WM_POWERBROADCAST then begin // windows powermanagement message if (MyMessage.WParam = PBT_APMQUERYSUSPEND) or (MyMessage.WParam = PBT_APMQUERYSTANDBY) then begin // Hier hin, was getan werden muss, bevor Windows in den Standby darf, // z.B. Netzwerk- oder Datenbankverbindungen trennen, Timer abstellen, etc. ShowMessage('Bin mal weg'); MyMessage.Result := 1; // allow standby/hibernation //MyMessage.Result := BROADCAST_QUERY_DENY; // deny standby/hibernation end else if (MyMessage.WParam = PBT_APMRESUMECRITICAL) or (MyMessage.WParam = PBT_APMRESUMESUSPEND) or (MyMessage.WParam = PBT_APMRESUMESTANDBY) then begin // Hier z.B. Verbindungen wiederherstellen ShowMessage('Wieder da ;)'); end; end; inherited WndProc(MyMessage); end; Dieser Code funktioniert meines Wissens nicht mehr auf aktuellem Vista SP1 ... Ich möchte wenn ein User in Standby geht vorher aktionen durchführen also z.b. StandbyEvent -> CloseProgramm -> ExecuteStandby. Das funktioniert so nicht. Nur der 'Nach WakeUp' Code funktioniert ? //add:Zudem würde ich gerne das Standby verhindern unter Vista Kann mir da jemand auf sie Sprünge helfen was sich in Vista geändert hat und wie ich das erreichen kann ? Thanx |
Re: OnBefore Standby -> aktion ausführen mit Vista SP1
Mit
![]() ![]() Anscheinend musst du es "vorher sagen" wenn der User nicht in den Standby gehen darf ... bzw. du wirst nur noch benachrichtigt, und nicht mehr gefragt. |
Re: OnBefore Standby -> aktion ausführen mit Vista SP1
So nach eingem lesen ist es wohl so, dass M$ das verhindern eines vom User veranlassten Standby
entfernt hat ;( Der Anwendung bleiben 2sec - in worten zwei Sekunden :shock: - um noch ausstehende tasks zu erledigen. Alles was ich gefunden habe wie SetThreadExecutionState, BlockReasonCreate etc. verhindert kein Standby Dem oben angeführten Beispiel bleibt zu wenig Zeit etwas zu erledigen -> erst nach WakeUp wird der code ausgeführt. Fällt vielleicht irgendjemanden was ein, wie man mein Anliegen doch bewerkstelligen kann ? Also bei einem von User initierten Standby oder einem vom OS initierten Standby diesen verzögern/verhindern um noch was zu erledigen ? thanx |
Re: OnBefore Standby -> aktion ausführen mit Vista SP1
Nun, Microsoft hat das nicht aus Jux und Tollerei geändert, sondern weil es Programme gab, die damit Schindluder trieben. Warum musst du unbedingt darauf reagieren? Ich meine, die Welt geht doch nicht unter, das Leben geht nach dem Aufwachen aus dem Standby bzw. dem Ruhezustand doch ganz normal weiter. Der Benutzer will möglicherweise mit Absicht den Standby herbeiführen (oder das OS macht es, weil der Akku fast leer ist). Das zu verzögern kann so gesehen fatale Folgen haben.
Dauert denn das Trennen deiner Verbindungen oder was immer du machst so lange? Was muss da gemacht werden? Reicht das Trennen der Verbindungen durch Windows nicht aus? Anders gefragt, warum musst du ständig diese Verbindungen offenhalten, wenn ein Standby des Systems ein normaler Vorgang ist (und es somit nicht um die Verfügbarkeit gehen kann)? Andererseits, was ich bei mir immer beobachten kann: Das Herunterfahren dauert seine Zeit, und ein blockierendes Programm wird erst dann wirklich geschlossen (bzw. wenn es in einem modalen Dialog hängt, die Liste mit den das Herunterfahren verhindernden Programmen angezeigt), nachdem die anderen Programme einigermaßen durch sind. Vielleicht hilft es dir daher, wenn du einen modalen Dialog anzeigst. Wenn ein verfrühter Standby tatsächlich kritisch für deine Anwendung ist und diese von hinreichender Wichtigkeit ist, kannst du natürlich auch als Systemvoraussetzung einen nicht aktivierten Standby-Modus verlangen. |
Re: OnBefore Standby -> aktion ausführen mit Vista SP1
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 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