![]() |
Wm_powerbroadcast
Hallo,
Ich versuche den Standby und Suspend modus von Windows 7 (x64 Pro) zu verhindern, das scheint aber nicht zu funktionnieren.
Code:
Wenn ich ein ShowMessage nach dem Message.Result mache, dann sehe ich die Meldung nach dem aufwecken...
...
TMainForm = class(TForm) Private procedure WMPowerBroadcast(var Message: TMessage); message WM_POWERBROADCAST; end; ... implementation ... procedure TMainForm.WMPowerBroadcast(var Message: TMessage); begin case Message.WParam of PBT_APMQUERYSUSPEND, PBT_APMQUERYSTANDBY, PBT_APMSUSPEND, PBT_APMSTANDBY: begin Message.Result := BROADCAST_QUERY_DENY; end; end; end; Grüsse, Frederic |
AW: Wm_powerbroadcast
Ich verstehe die Beschreibung in
![]() Zitat:
|
AW: Wm_powerbroadcast
Steht auch noch da:
Zitat:
|
AW: Wm_powerbroadcast
Du hättest natürlich auch erstmal in die SuFu schauen können, was die dazu sagt. :roll:
Manchmal kommt es vor, daß Andere schon ein ähnliches Problem hatten und man dort bereits eine Antwort findet. z.B. ![]() ![]() |
AW: Wm_powerbroadcast
Vielen Dank für Ihre Antworten. Ich habe nicht daran gedacht dass Microsoft bei jedem OS Wechsel alles ändert...
Also wenn ich gut verstanden habe, mit XP benutzt man WM_POWERBROADCAST mit BROADCAST_QUERY_DENY. Mit Vista SetThreadExecutionState und mit Win7 PowerCreateRequest u. PowerSetRequest. Was ist mit Win9, wird da eine neue Prozedur eingesetzt ? Zitat:
Und das Problem ist nicht das selbe. Ich möchte verhindern dass der Computer ins Standbymodus geht, und nebenbei auch ein Shutdown macht ohne das der User das Programm korrekt zumacht. |
AW: Wm_powerbroadcast
Naja, von XP auf Vista und folgende war es halt ein großer Schritt. Das ist ja nicht das einzige was sich rabiat geändert hat. Und wer weiß, vielleicht ist das nächste Windows ja der nächste dieser Art. Das muss dann ja wohl Smartphones, große und kleine Tablets sowie den klassischen Desktop unter einen Hut bringen 8-)
|
AW: Wm_powerbroadcast
Ich habe da noch eine Frage.
Warum sind SetThreadExecution und PowerCreateRequest/PowerDestroyRequest nicht in XE6 definiert ? Hat jemand ein Beispiel in Delphi mit PowerCreateRequest ? Grüsse, Frederic |
AW: Wm_powerbroadcast
Zitat:
![]()
Delphi-Quellcode:
type
EXECUTION_STATE = DWORD; const ES_SYSTEM_REQUIRED = $00000001; ES_DISPLAY_REQUIRED = $00000002; ES_USER_PRESENT = $00000004; ES_AWAYMODE_REQUIRED = $00000040; ES_CONTINUOUS = $80000000; function SetThreadExecutionState(esFlags: EXECUTION_STATE): EXECUTION_STATE; stdcall; external 'kernel32.dll' name 'SetThreadExecutionState'; procedure TForm1.Button1Click(Sender: TObject); begin if SetThreadExecutionState(ES_CONTINUOUS or ES_SYSTEM_REQUIRED or ES_AWAYMODE_REQUIRED) <> 0 then try // execute your long running task here finally SetThreadExecutionState(ES_CONTINUOUS); end; end; Ansonsten sagt einem ![]() |
AW: Wm_powerbroadcast
Dieser Code in #8 funktioniert ab WINDOWS 7 nicht mehr!
|
AW: Wm_powerbroadcast
Ja, ich meinte das auch eher nur als Beispiel zum Definition der Methoden, Konstanten und Datentypen "nachrüsten".
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 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