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?
Aşağıdaki fonksiyonu inceleyin.
SetThreadExecutionState (https://msdn.microsoft.com/en-us/library/aa373208%28VS.85%29.aspx)
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.
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
Undeclared identifier SetThreadExecutionState hatası alıyorum.
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;
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.
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
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
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.
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?