Практическое руководство по компьютерным приколам 2

Практическое руководство по компьютерным приколам

Очередной привет всем любителям компьютерных приколов и розыгрышей, желающим создавать эти самые розыгрыши своими ручками (прямыми, как струны гитары, надеюсь:)). В этой статье я хотел бы продолжить описание создания своих приложений на Borland Delphi. Сразу хочу поблагодарить всех читателей, буквально забросавших мой многострадальный ящик советами по модернизации, предложениями новых приколов и т.д. Особенно хотел бы выделить таких людей, как Юрий Паршин, Вадим Утенков, Fastman и др. Спасибо всем, кто неравнодушен к хорошей шутке. Постараюсь оправдать ваше доверие. А вот и порция следующих розыгрышей:

1. Формат винту не товарищ.
Первый антивирус носил гордое название format.com.
Чего боится каждый пользователь кучки микросхем, которая гордо именуется компьютером? Конечно же, форматирования своих драгоценных дисков, на которых хранятся воистину бесценные коллекции фильмов, музыки, игр и фотографий Бори Моисеева в обнаженном виде:). Посему для следующего прикола лучше предусмотрительно "забыть" на столе несколько таблеток валидола и быть готовым вызвать добрых дядей в белых халатах на случай сердечного приступа жертвы, созерцающей форматирование своего C:-диска. А вот эмулятор этого форматирования придется писать самому. Для начала нужно хорошенько всмотреться в стандартное окно форматирования, а затем придать своей форме в Delphi точно такой же вид. Очень уж похожим можно и не делать. Воображение противника не будет различать деталей. Для Windows XP окошко может быть таким:

При создании всей этой красоты нужно поместить на форму 4 элемента ComboBox, 4 элемента Label, 1 элемент GroupBox, 3 элемента Check-Box и 1 элемент Button из вкладки Standart, 1 элемент ProgressBar из вкладки Win32, а также 1 элемент Timer из вкладки System палитры компонентов. Для создания самих надписей используйте поля инспектора объектов Caption для элементов Label, GroupBox, Button и Check-Box и поле Text для элементов Com-boBox (естественно, всю информацию о "форматируемом" диске нужно знать заранее). Для элементов ComboBox поле Enabled рекомендую установить в False для невозможности изменения ваших надписей. Затем кликаем дважды на Timer и модифицируем код:

procedure TForm1.Timer1Timer (Sender: TObject);
begin
progressBar1.Position:=progress Bar1.Position+3;
end;

Все. Заносим ярлык от скомпилированной программы в Автозагрузку и уходим со спокойной совестью домой, ожидая телефонного звонка и истошных воплей о страшном сбое, отформатировавшем все диски и героическом закрытии окна форматирования Великим хакером Васей Пупкиным, спасшем свой диск (и, конечно же, весь мир) от злобного вируса. В предвидении вопроса о том, почему программу можно так легко закрыть, сообщаю: данный прикол проделывался мною несколько раз, и опыт показывает, что человек, видя, что окно не закрывается, впадает в настоящую истерику, а шутка должна быть безобидной, ибо только тогда она не оставит тяжелого отпечатка на душе жертвы и на вашей совести.

2. Есть одна реальная сила — сила притяжения.
Windows отследила перемещение мыши. Перезагрузитесь, чтобы изменения вступили в силу.
Все в этом грешном мире подчиняется законам природы. Все, кроме курсора нашей мышки, нагло летающего по рабочему столу в невесомости вопреки силе притяжения. Ну да ничего, найдется и на него управа. Помещаем на форму элемент Timer из вкладки System палитры компонентов. В инспекторе объектов установите для вашего таймера значение Interval=1; Для сокрытия окна приложения дважды кликните на форму и модифицируйте код так, как это показано ниже:

procedure TForm1.FormCreate (Sender: TObject);
begin
Application.ShowMainForm:= false
end;

Для реализации самого эффекта притяжения дважды кликните на компонент Timer и пишите:

procedure TForm1.Timer1Timer(Sen der: TObject);
var
p:Tpoint;
begin
GetCursorPos(p);
SetCursorPos(p.x,p.y+((Screen. height-p.y) div 30));
end;

Теперь о том, как это работает. Для эффекта используются функции GetCursorPos(), возвращающие в структуру p координаты курсора мышки (p.x и p.y). Затем с помощью процедуры SetCur-sorPos мы устанавливаем новые координаты, обеспечивающие сохранение позиции курсора по координате X и увеличение его Y-координаты в зависимости от положения относительно числа Screen. height (разрешение вашего экрана по вертикали). Для реализации некоторых других эффектов можно чуть-чуть модифицировать процедуру SetCursorPos:
SetCursorPos(1,1);//курсор всегда в левом верхнем углу экрана
SetCursorPos(p.x-3,p.y-3); //курсор летит в верхний угол экрана
SetCursorPos(Screen.Width div 2, Screen.Height div 2); //курсор всегда в центре и т.д.
В общем, достаточно разобраться с самыми общими принципами работы данных процедур, а потом уже можно шутить на свое усмотрение.

3. The Matrix has you…
Продам исходник Матрицы. (с) Нео.
Ну и кто там не смотрел "Матрицу"? Уж этот-то фильм наверняка знают все жители нашей необъятной страны. Посему не затронуть эту тему было бы настоящим преступлением. Не так уж трудно представить физиономию человека, перед которым экран становится черным и начинает медленно печататься надпись "The Matrix has you…" Итак, грузим Delphi, добавляем на форму компонент Label из вкладки Standart и компонент Timer из вкладки System палитры компонентов. Переходим в окошко кода (F12) и ищем строчку Var. Затем ко всему, что ниже, ее приписываем:

Var
Form1: TForm1;
s:string='The Matrix has you ...';
i:integer=1;
Дважды кликаем на форме и модифицируем код:
procedure TForm1.FormCreate (Sender: TObject);
begin
{0}Label1.Caption:='';
{1}Form1.Color:=0;
{2}Form1.BorderStyle:=bsNone;
{3}Form1.Left:=0;
{4}Form1.Top:=0;
{5}Form1.Width:=Screen.Width;
{6}Form1.Height:=Screen.Height;
{7}ShowCursor(false);
{8}Label1.Font.Color:=RGB(0,200,0);
{9}Label1.Font.Size:=14;
end;

Затем в инспекторе объектов поле Interval компонента Timer устанавливаем в 300. Двойной клик на Таймере и дописываем следующее:

procedure TForm1.Timer1Timer (Sender: TObject);
begin
if i<=length(s) then begin
Label1.Caption:=Label1.Caption+s[i];
inc(i);
end;
end;

Ну, а сейчас подробнее о коде:
{0} обнуляет текст компонента Label (присваивает ему пустую строку)
{1} делает нашу форму черного цвета
{2} убирает заголовок и границы формы
{3}-{6} растягивает форму на весь экран
{7} прячет курсор мышки
{8} устанавливает цвет нашей надписи (зеленый)
{9} устанавливает размер надписи
В результате всего после компиляции при запуске программы должна просматриваться следующая картинка.

Далее вариантов несколько. Можно просто забросить ярлык программы в автозагрузку и дождаться ближайшей перезагрузки (для Win 9x долго ждать не придется:)). А можно воспользоваться такой замечательной программкой, как Планировщик задач. Он сам любезно запустит Матрицу в нужное время.

4. Утекай.
Нажми на кнопку, получишь разряд…
Замечательная есть все-таки шутка, обросшая уже энным количеством бород и клонов. Это окошко с надписью "Довольны ли вы своей зарплатой" (как варианты — "своим деканом", "своим директором"). Реализацией именно этого прикола мы сейчас и займемся. Помещаем на форму два элемента Button из вкладки Standart палитры компонентов и дважды кликаем на форме:

procedure TForm1.FormCreate(Sen-der: TObject);
begin
Form1.BorderStyle:=bsDialog;
Form1.Caption:='Довольны ли вы своей зарплатой';
Button1.Caption:='НЕТ';
Button2.Caption:='ДА';
end;

Затем вновь возвращаемся к форме (F12), выделяем мышкой нашу первую кнопку и переходим в инспекторе объектов на вкладку Events. Ищем там поле OnMouse Move и дважды кликаем напротив него:

procedure TForm1.Button1Mouse Move(Sender: TObject; Shift: TShift State; X, Y: Integer);
begin
Button1.Left:=Random(Form1. Width-Button1.Width);
Button1.Top:=Random(Form1. Height-Button1.Height);
end;

Данный код при наведении мышки на кнопку перемещает ее в новое место (в пределах формы, конечно). Осталось всего-то слегка подколоть противника, который в конце концов нажмет на кнопку "ДА". Кликаем дважды на второй кнопке и в обработчике пишем:

procedure TForm1.Button2Click (Sender: TObject);
begin
ShowMessage('Кто бы сомневался');
end;

После компиляции можно запустить программку на компьютере жертвы и предложить ей выбрать вариант. Затем, пока противник будет гоняться за кнопкой, можно попить кофе, принять душ и т.д. в зависимости от фантазии.
На этом пока все. Пишите, предлагайте, спрашивайте, рекомендуйте. Успехов!

Паша Либер aka Fireangel,
Fireangel@tut.by



Компьютерная газета. Статья была опубликована в номере 40 за 2003 год в рубрике программирование :: разное

©1997-2024 Компьютерная газета