AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wm_powerbroadcast

Ein Thema von fs999 · begonnen am 28. Jul 2014 · letzter Beitrag vom 3. Jul 2015
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von fs999
fs999

Registriert seit: 4. Dez 2006
Ort: Luxembourg
46 Beiträge
 
Delphi 10.3 Rio
 
#1

Wm_powerbroadcast

  Alt 28. Jul 2014, 16:15
Hallo,

Ich versuche den Standby und Suspend modus von Windows 7 (x64 Pro) zu verhindern, das scheint aber nicht zu funktionnieren.

Code:
...

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;
Wenn ich ein ShowMessage nach dem Message.Result mache, dann sehe ich die Meldung nach dem aufwecken...

Grüsse,
Frederic
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#2

AW: Wm_powerbroadcast

  Alt 28. Jul 2014, 17:47
Ich verstehe die Beschreibung in http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx so, dass das nur bei Windows-XP und Windows-Server-2003 funktioniert:

Zitat:
Windows Server 2003 and Windows XP: An application can return BROADCAST_QUERY_DENY to deny a PBT_APMQUERYSUSPEND or PBT_APMQUERYSUSPENDFAILED request.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Wm_powerbroadcast

  Alt 28. Jul 2014, 18:14
Steht auch noch da:
Zitat:
To prevent the system from transitioning to a low-power state in Windows Vista, an application must call SetThreadExecutionState to inform the system that it is in use.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wm_powerbroadcast

  Alt 28. Jul 2014, 18:24
Du hättest natürlich auch erstmal in die SuFu schauen können, was die dazu sagt.

Manchmal kommt es vor, daß Andere schon ein ähnliches Problem hatten und man dort bereits eine Antwort findet.
z.B. Hier im Forum suchenPBT_APMSTANDBY => http://www.delphipraxis.net/169775-r...er-2011-a.html
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Jul 2014 um 18:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von fs999
fs999

Registriert seit: 4. Dez 2006
Ort: Luxembourg
46 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Wm_powerbroadcast

  Alt 29. Jul 2014, 14:06
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 ?

Du hättest natürlich auch erstmal in die SuFu schauen können, was die dazu sagt.

Manchmal kommt es vor, daß Andere schon ein ähnliches Problem hatten und man dort bereits eine Antwort findet.
z.B. Hier im Forum suchenPBT_APMSTANDBY => http://www.delphipraxis.net/169775-r...er-2011-a.html
Ich die SuFu benutzt, doch da meine Muttersprache nicht Deutsch ist, habe ich nach PowerBroadcast gesucht und dieses Thema nicht gefunden.
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.

Geändert von fs999 (29. Jul 2014 um 17:20 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Wm_powerbroadcast

  Alt 29. Jul 2014, 17:11
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
  Mit Zitat antworten Zitat
Benutzerbild von fs999
fs999

Registriert seit: 4. Dez 2006
Ort: Luxembourg
46 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Wm_powerbroadcast

  Alt 30. Jul 2014, 11:02
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
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Wm_powerbroadcast

  Alt 30. Jul 2014, 11:38
Warum sind SetThreadExecution und PowerCreateRequest/PowerDestroyRequest nicht in XE6 definiert?
Weil die WinApi-Header irgendwie nicht mehr so wirklich aktuell gehalten werden. Es gibt eine Menge cooler Dinge die in letzter Zeit hinzukamen, in den Standard-Delphifiles aber nicht auftauchen.

http://stackoverflow.com/a/8733853/2298252:
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.dllname '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 MSDN zu PowerCreateRequest ja auch alles was man wissen muss um es selber zu machen. Ich finde nämlich auf die Schnelle auch nichts.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#9

AW: Wm_powerbroadcast

  Alt 30. Jul 2014, 12:07
Dieser Code in #8 funktioniert ab WINDOWS 7 nicht mehr!

Geändert von hathor (30. Jul 2014 um 12:11 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Wm_powerbroadcast

  Alt 30. Jul 2014, 12:15
Ja, ich meinte das auch eher nur als Beispiel zum Definition der Methoden, Konstanten und Datentypen "nachrüsten".
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:52 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