NApisałem odtwarzacz filmów, ale podczas oglądania filmu wylącza misię monitor.
funkcja
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2)
nie dziala.
Jak w rejestrze zmienić czas wyłączania się monitora ( 20 min)?
NApisałem odtwarzacz filmów, ale podczas oglądania filmu wylącza misię monitor.
funkcja
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2)
nie dziala.
Jak w rejestrze zmienić czas wyłączania się monitora ( 20 min)?
mozesz tak sprobowac...:
http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.nativeapi/2004-06/0001.html
Gościu na tej stronie sam pisze, że nie jest to dobra metoda (jest brudna :P) A ja sam też potrzebuje kodu, który by blokował wyłączanie monitora...
ale w przeciwienstwie do twojej dziala.
Już samo
Mouse_Event(MOUSEEVENTF_MOVE, $00000000, 0, 0, 0);
Nie porusza myszką oraz blokuje wyłączenia monitora... Jak jednak odczytać po ilu minutach monitor ma się wyłączać ? (tz. jaki interval ustawić)
a co to za roznica?
przeciez monitor wylacza sie np. po 20 minutach bezczynnosci, czyli wystarczy, ze ustawisz interval na np. 30 sek. wtedy max. czas bezczynnosci bedzie wynosil 30 sekund.
najkrotszy czas, jaki mozna ustawic w systemie to jedna minuta wiec mysle ze 30 sek. w zupelnosci wystarczy :P
Ustawiłem na 55 sek (ktoś włączając to musi użyć myszki/klawiatury więc monitor się w tym czasie nie wyłączy). Cały czas uważam jednak, że jest to brzydkie rozwiązanie :P
ech prawie dwa tygodnie dyskusji a wystarczyło w google wpisać 3 słowa = "delphi disable screensaver" i poszukać na grupach
Procedure TForm1.MessagesHandler (var Msg : TMsg; var Handled : Boolean);
Begin
case Msg.Message of
WM_SYSCOMMAND:
Begin
// Disable Screen Saver
if ((Msg.wParam and $fff0) = SC_SCREENSAVE ) then Handled := True;
if ((Msg.wParam and $fff0) = SC_MONITORPOWER) then Handled := True;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := MessagesHandler;
end;
Działa TYLKO jeśli Twój program jest aktywny!
Dzięki, MisiekD !
Co jednak zrobić, żeby podczas działania programu to włączyć z powrotem ?
Ech.. szkoda, że program nieaktywny (w trayu) nie działa jak należy :(
Procedure TForm1.MessagesHandler (var Msg : TMsg; var Handled : Boolean);
begin
if BlokujWygaszacz and
(Msg.Message = WM_SYSCOMMAND) and
(((Msg.wParam and $fff0) = SC_SCREENSAVE) OR ((Msg.wParam and $fff0)) then Handled := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := MessagesHandler;
end;
BlokujWygaszacz ustawiasz na True/False w zaleznosci czy chcesz/nie chcesz blokowac wygaszacz. Zakladam ze Misiekd podal poprawny kod :p poza tym pisane na kolenie ale poninno byc oka.