![]() |
![]() ![]() ![]() ![]() |
|
Экранный вирус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 прямо в свой смартфон. Подпишитесь на наш :: Главная :: Монитор и Экран ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||