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.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
MSDN zu PowerCreateRequest ja auch alles was man wissen muss um es selber zu machen. Ich finde nämlich auf die Schnelle auch nichts.