Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Пишем ScreenSaver в Delphi


Пpогpаммеpы квасят на пpиpоде. Идут pазговоpы, тpали-вали... Один pассказывает: - Познакомился тут с девушкой на дискотеке! Бесподобная деваха! И фигуpка, и мозги есть, и танцует хоpошо! Так вот, pешил pickup"нуть ее к себе домой. Пpигласил, она согласилась. Пpишли, выпили винца, поговоpили о том, о сем, музыку послушали. Потом я ее поцеловал, пpиподнял аккуpатно, посадил задницей на клавиатуpу, поднял юбку... Остальные: - Так у тебя компутеp дома стоит?!?! А какой???

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

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

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

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

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

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


 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}
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS