Bilgisayar uyku moduna geçmesini engelleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Bilgisayar uyku moduna geçmesini engelleme

Mesaj gönderen Serhat »

Bilgisayar program işlem yaparken bir süre sonra uyku moduna geçiyor program çalıştığı süre içinde bu durumu nasıl engelleye bilirim.
Efe
Üye
Mesajlar: 56
Kayıt: 09 Kas 2014 11:14

Re: Bilgisayar uyku moduna geçmesini engelleme

Mesaj gönderen Efe »

Merhaba

Aşşağıdaki kod bilgisayarın uyku moduna geçmesini engeller.

Kod: Tümünü seç

unit SystemCriticalU;

interface
uses

  Windows;

type

  TSystemCritical = class

  private

    FIsCritical: Boolean;

    procedure SetIsCritical(const Value: Boolean) ;

  protected

    procedure UpdateCritical(Value: Boolean) ; virtual;

  public

    constructor Create;

    property IsCritical: Boolean read FIsCritical write SetIsCritical;

  end;

var

  SystemCritical: TSystemCritical;

implementation

{ TSystemCritical }
//REF : http://msdn.microsoft.com/en-us/library/aa373208.aspx
type

  EXECUTION_STATE = DWORD;
const

  ES_SYSTEM_REQUIRED = $00000001;

  ES_DISPLAY_REQUIRED = $00000002;

  ES_USER_PRESENT = $00000004;

  ES_AWAYMODE_REQUIRED = $00000040;

  ES_CONTINUOUS = $80000000;

  KernelDLL = 'kernel32.dll';

 (*
     SetThreadExecutionState Function

    Enables an application to inform the system that it is in use,
    thereby preventing the system from entering sleep or turning off the display while the application is running.
   *)

procedure SetThreadExecutionState(ESFlags: EXECUTION_STATE) ; stdcall; external kernel32 name 'SetThreadExecutionState';

constructor TSystemCritical.Create;
begin

  inherited;

  FIsCritical := False;
end;

procedure TSystemCritical.SetIsCritical(const Value: Boolean) ;
begin

  if FIsCritical = Value then Exit;


  FIsCritical := Value;

  UpdateCritical(FIsCritical);
end;

procedure TSystemCritical.UpdateCritical(Value: Boolean) ;
begin

  if Value then //Prevent the sleep idle time-out and Power off.

    SetThreadExecutionState(ES_SYSTEM_REQUIRED or ES_CONTINUOUS)

  else //Clear EXECUTION_STATE flags to disable away mode and allow the system to idle to sleep normally.

    SetThreadExecutionState(ES_CONTINUOUS) ;
end;

initialization

  SystemCritical := TSystemCritical.Create;
finalization

  SystemCritical.IsCritical := False;

  SystemCritical.Free;
end.
Yukarıdaki kodu projenize ekleyin, kullanılışı

SystemCritical.IsCritical = True; // True set ettiğin sürece bilgisayar uykuya geçmeyecek

SystemCritical.IsCritical = False; // bilgisayarın uyku düzenini eski haline getir.
Cevapla