Einzelnen Beitrag anzeigen

Der schöne Günther

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

AW: Wm_powerbroadcast

  Alt 30. Jul 2014, 10: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