Wyłączający sie monitor

0

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)?

0

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...

0

ale w przeciwienstwie do twojej dziala.

0

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ć)

0

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

0

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

0

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!

0

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 :(

0
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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1