A background task is causing problems on notebooks with XP-SP2. The application
is developed using D7. It seems that the notebook is shutting down even though
the application is busy processing a background thread.

You can try this:

const
  ES_SYSTEM_REQUIRED  =1;
  ES_DISPLAY_REQUIRED =2;
  ES_USER_PRESENT     =4;
  ES_CONTINUOUS       =$80000000;
  KernelDLL='kernel32.dll';
type
  EXECUTION_STATE=DWORD;
var
  KernelHandle:Thandle;
  SetThreadExecutionState: procedure(ESFlags:EXECUTION_STATE); stdcall;
begin
  KernelHandle:=LoadLibrary(KernelDLL);
  if KernelHandle>=32 then begin{success}
    SetThreadExecutionState:=
                GetProcAddress(KernelHandle,'SetThreadExecutionState');
    if @SetThreadExecutionState=nil then
      RaiseLastOSError;
    SetThreadExecutionState(ES_SYSTEM_REQUIRED or ES_CONTINUOUS);
    FreeLibrary(KernelHandle);
    SetThreadPriority(HandleOfThread,THREAD_PRIORITY_HIGHEST);
  end
  else
    MessageDlg('Error: could not find '+KernelDLL,mtError,[mbOk],0);
end;

Although you might reconsider the call to SetThreadPriority; its probably not necessary.

-malcolm

__________________________________________________
Delphi-Talk mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi-talk

Reply via email to