Delphirus - прграммирование на delphi
   Все о delphi Delphirus - прграммирование на delphi
blocks.gif
Навигация
 

Главная
Статьи
Базы данных
Графика
Защита
Интернет
Система
Тексты
Мультимедиа
Файлы
Формы и окна
Другое
Советы
Базы данных
Графика
Интернет
Мультимедиа
Система
Тексты
Файлы
Файлы
Исходники
Компоненты
Инфо
Поиск по сайту
Обратная связь
Самое популярное
Аккаунт
Карта сайта

 
 
 

Советы по delphi \ Графика и Игры \ ScreenSaver и ScreenMate \ Пишем ScreenSaver в Delphi

Пишем ScreenSaver в Delphi

В примере описывается создание простейшего скринсейвера, а так же его установка и запуск.

Для написания скринсейвера нам необходимо включить следующие процедуры:

FormShow
скрыть курсор, установка обработки сообщений, начало отображения скринсейвера
FormHide
окончание отображения скринсейвера, отображение курсора
DeactivateScrSaver
обработка сообщений, деактивирование, если нажата мышка или клавиатура

Типичный код для этих процедур показан ниже.

Вы должны быть уверены, что Ваша форма создана со стилем fsStayOnTop. Вы так же должны быть уверены, что только один экземпляр Вашей программы будет запущен в системе. И в заключении Вам необходимо включить директиву компилятора {$D "Programname Screensaver"} в Ваш проект (*.dpr).

После того, как Вы скомпилируете программу, измените расширение файла на SCR и скопируйте его в Вашу системную папку WINDOWSSYSTEM .

var
  crs : TPoint; {первоначально расположение курсора мышки}

procedure TScrForm.FormShow(Sender: TObject);
{starts the screensaver}
begin
  WindowState := wsMaximized; {окошко будет на полный экран}
  GetCursorPos(crs); {получаем позицию курсора}
  Application.OnMessage := DeactivateScrSaver; {проверяем мышку/клавиатуру}
  ShowCursor(false); {скрываем курсор}
  {начинаем отображение скринсейвера...}
  //
end; {процедура TScrForm.FormShow}

procedure TScrForm.FormHide(Sender: TObject);
{возвращаем управление пользователю}
begin
  Application.OnMessage := nil; {запрещаем сообщения}
  {останавливаем скринсейвер...}
  //
  ShowCursor(true); {возвращаем курсор назад}
end; {procedure TScrForm.FormHide}

procedure TScrForm.DeactivateScrSaver(var Msg : TMsg; var Handled : boolean);
{определение движения мышки или нажатия на клавиатуре}
var
  done: boolean;
begin
  if Msg.message = WM_MOUSEMOVE then {сдвинулась мышка}
    done := (Abs(LOWORD(Msg.lParam) - crs.x) > 5) or
    (Abs(HIWORD(Msg.lParam) - crs.y) > 5)
  else {key / mouse нажаты?}
    done := (Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP) or
    (Msg.message = WM_SYSKEYDOWN) or (Msg.message = WM_SYSKEYUP) or
    (Msg.message = WM_ACTIVATE) or (Msg.message = WM_NCACTIVATE) or
    (Msg.message = WM_ACTIVATEAPP) or (Msg.message = WM_LBUTTONDOWN) or
    (Msg.message = WM_RBUTTONDOWN) or (Msg.message = WM_MBUTTONDOWN);
  if done then
    Close;
end; {procedure TScrForm.DeactivateScrSaver}

Название: Пишем ScreenSaver в Delphi
Дата публикации: 2004-08-30 (3421 Прочтено)

 
 

 

Page generation 0.026 seconds