Sleep moda girmeyi engellemek.

Başlatan z, 24 Temmuz 2016, 21:08:32

z

3D yazıcının 2 saat kadar işi vardı. Ben de makine başında beklemek yerine ortamdan ayrıldım. Gediğimde PC'nin sleep moda girdiğini haliyle de baskı işinin yarıda kaldığını gördüm.

Sleep modu windowsdan tamamen kaldırmadan  Delphide yazdığım program sayesinde sleep moda girme işlemini erteleyemezmiyim?

Benim programım tamam işim bitti artık sleep moda girebilirsin diyinceye kadar makine uyumaya geçmesin.

Nasıl yapılır?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

Normalde mouse hareket ederse sleep durumu erteleniyor.

Acaba yazılımla mouse kursorunu arada bir oynatsam işe yararmı diye merak etmeye başladım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

#3
SetThreadExecutionState, Delphi örnegi denedim.işe yaradi.

Güc seceneklerinden 1dk sonra uyku modu ayarladim.

Uygulama çalışırken laptop uyku moduna girmez oldu. Sadece ekran karariyor.
procedure TForm1.FormCreate(Sender: TObject);

begin
  //bilgisayar uyku modu iptal
  SetThreadExecutionState(ES_CONTINUOUS or ES_SYSTEM_REQUIRED or
    ES_AWAYMODE_REQUIRED);


https://stackoverflow.com/questions/8733457/how-to-programatically-prevent-windows-from-hard-disk-drive-spin-down

z

Undeclared identifier SetThreadExecutionState hatası alıyorum.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

#5
const ve type kısmını eklediniz? fonksiyonu  tanımladınız mı?

function SetThreadExecutionState(esFlags: EXECUTION_STATE): EXECUTION_STATE;
  stdcall; external 'kernel32.dll' name 'SetThreadExecutionState';


type
  EXECUTION_STATE = DWORD;

const
  ES_SYSTEM_REQUIRED = $00000001;
  ES_DISPLAY_REQUIRED = $00000002;
  ES_USER_PRESENT = $00000004;
  ES_AWAYMODE_REQUIRED = $00000040;




z

Yok eklemedim. Benzer fonksiyonların bazıları direk çalışıyor bazıları hiç çalışmıyor. Zaten bu örnekteki gibi fonksiyonlar helpde de çıkmıyor.

Gerçi kızacan ama Delphi 6 zamanında yoktu herhalde bu fonksiyonlar.

Neyse sağol çözüm dediğin gibidir anladım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

Bu fonksiyonun Delphi v.s. ile bir alakası yok. XP den sonraki tüm windows işletim sistemlerinde mevcut. İstediğiniz herhangi bir programlama diliyle çağırıp kullanabilirsiniz. Verdiğim linki incelemiş olsaydınız görürdünüz.

Alıntı Yap
Requirements

Minimum supported client   : Windows XP [desktop apps only]

Minimum supported server :  Windows Server 2003 [desktop apps only]

Header : Winbase.h (include Windows.h)

Library : Kernel32.lib

DLL : Kernel32.dll

"... a healthy dose of paranoia leads to better systems." Jack Ganssle

t2

#8
Kime niyet, kime kısmet.
Benim çok işime yaradi.

Program kullanimda iken, bilgisayarin uykuya girmemesi gerekiyordu.
Yıllardır gerekli olan fonksiyon idi. Fakat firsat bulup araştiramamiştim. Teşekkür ederim.

Delphi ornegi asagida. Adam yapilacak isler icin uyanik kalmayi istemis. Ben acilista calistirdim. Program acikken uykuya girmemis oldu.

https://stackoverflow.com/questions/8733457/how-to-programatically-prevent-windows-from-hard-disk-drive-spin-down


z

#9
Alıntı yapılan: Burak B - 25 Temmuz 2016, 23:34:14
Bu fonksiyonun Delphi v.s. ile bir alakası yok. XP den sonraki tüm windows işletim sistemlerinde mevcut. İstediğiniz herhangi bir programlama diliyle çağırıp kullanabilirsiniz. Verdiğim linki incelemiş olsaydınız görürdünüz.

Şöyle alakası var.

Windows fonksiyonlarının bir kısmı delphi içinde zaten tanımlı. Doğrudan fonksiyonu yazıp kullanıyor hatta "help"den yararlanıyorsunuz.

Eğer eski sürüm derleyici kullanıyorsan bu fonksiyon haliyle tanımlı olmuyor ve hata alıyorsun. T2'nin belirttiği gibi önce fonksiyonu tanıtman gerekiyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

#10
2 satir eklenecek hepsi o. Const yerine sayi yaz.

Delphi kurarken, ms help... secilirse bunlarin dokumani da kuruluyor.
Help > Windows SDK diye geçiyor.

Az önce baktım. Bu SDK help kısmında  SetThreadExecutionState fonksiyonundan bahsedilmemiş. fakat fonksiyon çalışıyor. Zaten  DLL, windows DLLi. Niçin çalışmasın ki?