Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
В примере описывается создание простейшего скринсейвера, а так же его установка и запуск.
Для написания скринсейвера нам необходимо включить следующие процедуры:
Типичный код для этих процедур показан ниже.
Вы должны быть уверены, что Ваша форма создана со стилем 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}