Четверг, 21.11.2024, 22:35 Приветствую вас Гость | Группа "Гости" 
Меню сайта

Категории раздела
Вирусология [40]
Статьи о вирусах
Системные [1]
Работа с системой
Примеры [45]
Приёмы, функции, процедуры
Ceти [1]
Работа с интернет
Шуточные программы [5]
Пишем шуточные программки
Остальное [6]
Всё что не вошло

Популярные статьи

Недавние темы

Опрос
Вы женаты/замужем?
Всего ответов: 11

Главная » Статьи » Delphi » Шуточные программы

У меня компьютер так глючит, что на нем даже никакой вирус не запустится…
1. Фундамент
Вначале было слово… И слово было 2 байта.

Итак, прежде чем приступить к описанию самих пакостей, нужно обеспечить нашей программе несколько вещей:
1. При активации программа должна быть невидимой.
2. Через определенный период программа должна выполнять какое-либо действие.
Для разработки всего этого счастья была выбрана среда Borland Delphi за понятный интерфейс и простоту использования. Несмотря на это, все нижеприведенное можно с таким же успехом реализовать и в любом другом Win32 языке программирования, работающем с WinApi. Как говорится, было бы желание.
Запускаем Delphi. После красивого окошка с логотипом перед нами появляется сама среда разработки. Вверху находятся диалоги открытия/закрытия файлов и панель компонентов (вкладки Standart, Additional и т.д.) Слева находятся Дерево Объектов (Object TreeView) и Инспектор объектов (Object Inspector). Чуть правее от них расположена наша главная форма. Для начала сделаем так, чтобы она (форма) при запуске приложения не была видна. Для этого просто сделайте двойной клик на форме и в открывшемся окошке с кодом введите строчку:

Application.ShowMainForm:=false;

Вновь возвращаемся к форме (F12) и помещаем на нее из палитры компонентов — вкладка System компонент, похожий на маленькие часики. Он называется Timer и позволяет через определенное количество времени передавать управление вашему коду. Выделим его кликом и посмотрим на инспектор объектов. Видите значение Interval=1000? Это значит, что код, записанный в свойстве OnTimer, будет вызываться каждые 1000 мсек, т.е. каждую секунду. Т.е., если вы хотите изменить интервал, через который будет срабатывать ваш прикол, просто измените свойство Interval. Рекомендую для первой пакости установить его значение в 4000. Делаем двойной клик по компоненту Timer и вновь попадаем в окно кода. После проделывания всего вышеприведенного у вас там должен быть следующий код:

unit Unit1;
interface
uses
Windows, Messages, Sys-Utils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Se nder: TObject);
procedure Timer1Timer (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Procedure TForm1.FormCre-ate(Sender: TObject);
begin
Application.ShowMainForm:= false;
end;

procedure TForm1.Timer1Ti-mer(Sender: TObject);
begin
{Именно здесь мы будем писать код, отвечающий за сами шутки}
end;
end.

Если все правильно, значит, фундамент заложен хорошо, и можно с чистой совестью переходить к следующим этапам создания нашего приложения. Весь следующий код будет писаться в обработчике OnTimer, поэтому очень рекомендую после создания основы сохранить ее как хороший шаблон для последующих довесок.

2. Тихо сам с собою я веду беседу...
Ну вот почему, когда ты говоришь с Богом — это молитва, а когда он с тобой — это шизофрения?

Вы с компьютером когда-либо говорили? А он с вами? Ничего, сейчас заговорит как миленький. Есть довольно много пользователей, которые для набора небольших документов используют встроенный в ОС Windows текстовый редактор "Блокнот". Модификацией этой маленькой и безобидной программы мы сейчас и займемся.
Перейдите в окно кода (F12) и найдите там строчку из одного слова Var. Это слово является сокращением от Variables, и после него описываются все переменные, которые вы хотели бы задействовать в своей программе. Под строчкой Form1: TForm1; напишите:

Mas:array[1..5] of pchar; {здесь мы разместим 5 строк, которые должен будет сказать наш "Блокнот"}
h:hwnd; {эти 2 переменные нужны, чтобы адресовать текст именно в окошко "Блокнота"}
dc:hdc;
i:byte=1; {переменная для переключения между выводимыми строками}

В процедуре TForm1.FormCreate добавьте строчки, чтобы она выглядела так:

Procedure TForm1.FormCreate (Sender: TObject);
begin
{1}Application.ShowMainForm:=false;
{2}mas[1]:='Привет';
{3}mas[2]:='Ну чего ты так уставился?';
{4}mas[3]:='Блокнота говорящего не видел?';
{5}mas[4]:='Может ты и терминатора не смотрел?';
{6}mas[5]:='Ну и ладно. Все. Молчу.';
end;

Затем модифицируем процедуру TForm1.Timer1Timer следующим образом:

procedure TForm1.Timer1Timer (Sender: TObject);
begin
{7}h:=FindWindow(nil,'Безымянный — Блокнот');
{8}if h<> 0 then begin
{9}dc:=GetDC(h);
{10}textout(dc,5,i*15,mas[i],length(mas[i]));
{11}if i+1<6 then inc(i);
end;
end;

Проверим работоспособность. Скомпилируйте программу (F9). Ваше окошко пропадет (не зря же мы его скрывали), но сама программа будет оставаться в памяти и терпеливо выжидать свою жертву. Теперь запустите Пуск — Программы — Стандартные — Блокнот и наслаждайтесь:). Завершить работу вашего приложения можно нажав Ctrl+F12.
Теперь немного теории (нужно же хоть чуточку представлять, что ж вы натворили-то:)). Строка {1}, как было сказано ранее, прячет наше приложение от глаз пользователя (но не от Ctrl+Alt+Del). Строки {2} — {6} описывают то, что будет печататься в нашем "Блокноте". Модифицируйте их на свое усмотрение. Строка {7} получает дескриптор окна "Блокнота" по его заголовку (это надпись вверху окна на синем фоне). Поэтому программа будет работать только с "Блокнотом", в который не загружен текстовый файл. Строка {8} проверяет, найдено ли это окно. Если да, то работают строки {9}-{11}. В строке {9} мы по дескриптору окна "Блокнота" получаем его контекст устройства (белая область, куда будут выводиться надписи). В строке {10} мы выводим саму надпись в "Блокноте". Надпись хранится в массиве mas[i] — их мы задавали выше. Строка {11} проверяет, будет ли переменная i при увеличении лежать в пределах [1-5], и увеличивает ее для отображения в следующий раз новой строки.
Сохраним программу (Ctrl+S). Вам придется сохранить два файла: файл с кодом (имя давайте любое) и имя проекта (совпадает с именем *.exe-файла). Проект нужно называть так, чтобы даже обнаружив программу противник решил, что это системный файл. Примеры: winsys32.exe, kern32.exe и т.д. Теперь достаточно запустить *.exe-файл (лежит там, куда вы сохраняли проект) и спокойно ждать, когда жертва запустит "Блокнот". В случае, если противник попытается отвечать компьютеру, можно смело вызывать санитаров и радостно ждать устранения "сумасшедшего, пытающегося достойно ответить Искусственному Интеллекту":).

3. Скажи пиратам нет!
Крупная корпорация ищет хакеров и пиратов для сотрудничества. Наш сайт: www.microsoft.com.

Не сомневаюсь, что на компьютере-жертве стоит ОС Windows, которой до лицензии, как Биллу Гейтсу до моей стипендии:(. Но, поскольку бедного дядю Билла все ругают и обижают, нужно сделать хоть одно доброе дело на благо его благ:). А именно — напоминать о том, что Windows нужно регистрировать, каждые 5 минут. Посему снова загружаем наш фундамент, устанавливаем значение Interval в 300000 (в инспекторе объектов для объекта Timer) и дописываем пару строчек в процедуре TForm1.Timer1Timer:

Procedure TForm1.Timer1Timer (Sender: TObject);
begin
if GetDesktopWindow<> 0 then begin
MessageBox(GetDesktopWindow,'Срок действия лицензии вашей системы истек.', 'Windows XP', MB_OK);
end;
end;
И каждые 5 минут на бедного мальчика/девочку будет вываливаться веселое окошко.
Опять немного теории. В этой программке все гораздо проще. Все взаимодействие с системой осуществляется по дескриптору окна, которое есть почти всегда. Это окно — ваш рабочий стол. Получить его дескриптор можно с помощью функции GetDesktop Window.
А процедура MesageBox выводит само сообщение, где сначала выводится текст послания ('Срок действия лицензии вашей системы истек'), а потом заголовок окна ('Windows XP'). Запускаем… наслаждаемся:).

4. Кофе подан, сэр!
Моя женя такая заботливая... Выйдешь ночью водички хлебнуть... Возвращаешься, а кровать уже застелена.

Почти все компьютерщики пьют кофе.
И не потому, что напиток этот вкусный такой, а потому, что спать уж больно не хочется, пока синяя ящерка еще пару уровней не одолеет.
А как еще напомнить о кофе человеку, сидящему перед монитором, как не выдвинуть самую популярную под него подставку — CD-ROM.
Можно даже диск у пользователя выпросить. К тому же, как и в предыдущих случаях, код весьма прост.
Грузим наш фундамент и выставляем компоненту Timer значение Interval в 600000 (10 мин). Затем в обработчике OnTimer пишем:

procedure TForm1.Timer1Ti-mer(Sender: TObject);
begin
MessageBox(GetDesktopWindow,'Слышь...Дай диска пожевать', 'CD-ROM', MB_OK);
mciSendString('Set cdaudio door open wait', nil, 0, handle);
end;

Ищем в программе строчку, начинающуюся со слова Uses (искать вверху кода). 
После этого слова в Delphi описываются имена подключаемых модулей. Для работы программы нужно в конце дописать MMSystem;
Компилируем (F9) и... каждые 10 минут у бедного дяди будет выскакивать нижеприведенное окошко, просящее диск, и открываться привод CD-ROM'а.
Для закрытия CD-ROM'а можно добавить одну строчку в нашу программу:


MessageBox(GetDesktopWindow,'Слышь...Дай диска пожевать', 'CD-ROM', MB_OK);
mciSendString('Set cdaudio door open wait', nil, 0, handle);
mciSendString('Set cdaudio door closed wait', nil, 0, handle);


Получите удовольствие от кормежки своего железного друга пиратскими копиями программ.

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

Категория: Шуточные программы | Добавил: dolphin (03.10.2008)
Просмотров: 4200 | Комментарии: 1 | Рейтинг: 3.6/8

Всего комментариев: 1
avatar
1 opius • 13:39, 16.04.2010
Голова ненужна можно исходники скачать а borland лучше 7 постанвить ! bash
avatar
Профиль



Поиск

Наша кнопка
Вирусология, взгляд из Delphi

Статистика
Top.Mail.Ru Яндекс.Метрика Счетчик тИЦ и PR
Статистика материалов
Файлов: 457
Форум: 1165/8118
Коментариев: 770
Новостей: 29

Статистика пользователей
Всего: 379
За неделю: 1
Вчера: 0
Сегодня: 0
Всего онлайн: 36
Гостей: 36
Пользователей: 0

delphicode.ru © 2008 - 2024 Хостинг от uCoz