Экранный вирусDelphi , ОС и Железо , Монитор и ЭкранЭкранный вирусНикогда не видели экранного вируса? Представьте, что Ваш экран заболел и покрылся красными пятнами :) А если эта болезнь нападёт на какое-нибудь окно ? Всё, что нам надо, это получить контекст устройства при помощи API функции GetWindowDC и рисовать, что душе угодно. К исходному коду особых комментариев не требуется, скажу лишь только то, что основная часть кода находится в обработчике события OnTimer: type TScreenVirus = class(TComponent) private FTimer: TTimer; FInterval: Cardinal; FColor: TColor; FRadius: Integer; protected procedure OnTimer(Sender: TObject); procedure SetInterval(Value: Cardinal); public constructor Create(AOwner: TComponent); override; procedure StartInfection; published property Interval: Cardinal read FInterval write SetInterval; property Color: TColor read FColor write FColor default clRed; property Radius: Integer read FRadius write FRadius default 10; end; constructor TScreenVirus.Create(AOwner: TComponent); begin inherited Create(AOwner); FTimer := TTimer.Create(Owner); FInterval := FTimer.Interval; FTimer.Enabled := False; FTimer.OnTimer := OnTimer; FColor := clRed; FRadius := 10; end; procedure TScreenVirus.StartInfection; begin if Assigned(FTimer) then FTimer.Enabled := True; end; procedure TScreenVirus.SetInterval(Value: Cardinal); begin if Value <> FInterval then begin FInterval := Value; FTimer.Interval := Interval; end; end; procedure TScreenVirus.OnTimer(Sender: TObject); var hdcDesk: THandle; Brush: TBrush; X, Y: Integer; begin hdcDesk := GetWindowDC(GetDesktopWindow); Brush := TBrush.Create; Brush.Color := FColor; SelectObject(hdcDesk, Brush.Handle); X := Random(Screen.Width); Y := Random(Screen.Height); Ellipse(hdcDesk, X - FRadius, Y - FRadius, X + FRadius, Y + FRadius); ReleaseDC(hdcDesk, GetDesktopWindow); Brush.Free; end; Программный код на Delphi, который имитирует вирус экрана, рисуя красные точки (эллипсы) случайным образом на рабочем столе с помощью функций Windows API. Вот подробное описание, как работает код:
Код довольно прост, но есть несколько предложений:
В целом, это интересный пример использования функций Windows API для создания интересных визуальных эффектов! В статье описывается создание экранных вирусов в Delphi, который может заразить окно компьютера красными пятнами. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Монитор и Экран ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |