Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отловить момент, когда Screen Saver закончил работу [D5]


DFR ©   (2005-08-06 04:39:00) 

По моему Win не посылает сообщение при этом?


DFR   (2005-08-10 12:27:00) [1]

Нужна еще помощь, по этой теме.

Процедуры и функция определяющие момент
начала и соответственно окончания
работы ScreenSaver`a, вроде работают
но есть вопросы.
Сначала код:
//Определяет окончание работы в OnTimer
functionIsScreenSaverRun:Boolean;
var
Run:Bool;
begin
 Run:=False;
 SystemParametersInfo(SPI_GETSCREENSAVERRUNNING,0,@Run,2);
 Result:= Run ;
end;

procedureTForm1.Timer1Timer(Sender: TObject);
begin
  If not IsScreenSaverRun   Then
  begin

  Timer1.Enabled:= False;
// действия...
  end;
end;


//Определяет начало работы
procedureWMSysCommand( var Message: TWMSysCommand); messageWM_SYSCOMMAND;

procedure TForm1.WMSysCommand( var Message: TWMSysCommand);
begin
inherited;

If Message.CmdType and  $FFF0  =  SC_SCREENSAVE   Then
begin
 Timer1.Enabled:= True;
  end;
end;


1.Почему не посылается сообщение WM_SYSCOMMAND если главное окно(TForm1) не активно, например минимизировано.
2.Если у Вас есть возможность проверить функцию  IsScreenSaverRun в Win95, Nt и 2000.
Будет ли она работать на этих платформах.


Eraser   (2005-08-06 13:30:00) [2]

В доплнении к Юрий Зотов ©   (06.08.05 10:10) [2] почитай http://forum.sources.ru/index.php?showtopic=82713&st=15&


Юрий Зотов   (2005-08-06 10:10:00) [3]

SystemParametersInfo с параметром SPI_GETSCREENSAVERRUNNING позволяет определить, работает ли скринсейвер. Проверять можно, например, по таймеру.


забыл   (2005-08-06 07:46:00) [4]

я вижу такой вариант:

определяем путь к scr зарегистрированного по умолчанию screensaverа, определяем запущен ли он в данный момент, получаем инфу по процессу. таймером пасем завершение или же попытаться waitforsingleobject...

P.S. не обессудьте, у мя щас раннее утро )


Наверх

Титульная страница Поиск, карта сайта Написать письмо