$723.23


$29.68


$12.07


Три прикола в Дельфи!

Сейчас я покажу, как своими руками написать три прикола в DELPHI. Итак, приступим сразу к делу.

Прикол первый:
Давайте напишем программу, которая будет выводить в какую-то часть экрана кнопку с надписью «нажми на меня», а если объект нашего прикола все же решится нажать на кнопку, то его экран засыплет кнопками с соответствующей надписью!

Создайте новый проект (надеюсь не надо объяснять как =)) на форму в левый верхний угол поместите кнопку и поменяйте ей свойство Caption на «нажми на меня» (без кавычек).

В свойстве формы BorderStyle поставьте bsNone в свойстве FormStyle поставьте fsStayOnTop, чтобы окно было всегда поверх остальных и не имело никаких обрамлений. После всего этого можете поставить на форму компонент XPManifest(если у вас DELPHI 7 и выше), чтобы кнопка была в стиле XP(я обошелся без этого). Теперь создайте обработчик нажатия на кнопку и поместите туда следующий код:


var
X: TForm1; // переменная типа TForm1 для создания нового окна
begin
X:= TForm1.Create(NIL); // создаем новую форму
ShowWindow(X.Handle, SW_SHOW); // показываем новую форму
ShowWindow(X.Button1.Handle, SW_SHOW); // показываем кнопку
X.Top:= Random(Screen.Height); // меняем положение окна

X.Left:= Random(Screen.Width);
X.Repaint; // Перерисовываем окно (чтобы оно отобразилось коррекно)
Sleep(100); //делаем паузу чтобы пользователь попытался что-то сделать
Button1.Click; // снова щелкаем по кнопке
end;

в общем-то здесь можно разобраться по комментариям, но для особо «понятливых» :) поясню. В начале я описываю переменную Х класса TForm1, потом создаю его, также как обычный объект. Но если я просто создам форму то на экране ничего не появится т.к форма созданная таким образом изначально невидима, а чтобы она появилась я вызываю процедуру ShowWindow, ей надо передать два параметра первый это окно, а второй это параметр определяющий будет ли видно окно он может иметь следующие виды:

1: SW_SHOW- окно видимо как обычное окно.
2: SW_HIDE- окно невидимо.
3: SW_MINIMIZE- окно будет свернуто на панель задач.
4: SW_MAXIMIZE- окно будет развернуто на весь экран.
5: SW_RESTORE- если я не ошибаюсь то окно будет восстановлено в нормальное положение.

В принципе параметров много и все я здесь описывать не буду — это лишь основная часть.

Если окно показать просто так то кроме пустого пятна мы не увидим ни чего, чтобы на окне была кнопка надо ее показать тем же методом что и саму форму, к счастью кнопка тоже имеет свойство Handle- это ее окно и мы его тоже должны показать! Потом я меняю положение окна (надеюсь это понятно =)). Потом окно надо ОБЯЗАТЕЛЬНО перерисовать, вызвав метод Repaint самого окна, иначе есть вероятность вместо окна увидеть квадрат или вообще ничего! Потом ждем 100 миллисекунд и опять жмем на кнопку, повторяя те же нехитрые действия пока комп не повиснет =) или наш процесс в Диспетчере задач не убьют :( . В обработчике создания главной формы напишите следующие:

procedure TForm1.FormCreate(Sender: TObject);
begin
Width:= Button1.Width; // Меняем размеры у главного окна
Height:= Button1.Height;
end;

Это нужно для того чтобы и форма и кнопка имела одинаковый размер будет ощущение что кнопка одна без формы «висит» на экране. Размеры я меняю программно (не в среде DELPHI) т.к мышкой нужные размеры поставить не всегда можно, особенно если кнопка очень маленькая. Затем в обработчике ОТОБРАЖЕНИЯ формы напиши следующее:

procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE); // прячемся с панели задач
end;

Здесь мы исчезаем панели задач вызвав метод ShowWindow и в качестве первого параметра передав окно программы(или как это по научному звучит).

Кто-то скажет: «Че за маразм, почему мы прячемся и изменяем свои размеры в разных обработчиках?», а маразм в том, что если все написать в обработчик создания формы то изображение нашей программы не исчезнет с панели задач, а если все накатать в обработчик показания окна, то размеры не изменятся вот и приходится страдать маразмом и писать непонятные программы! =) Фу, кажется, с первым приколом разобрались! Теперь я опишу второй.

Прикол второй.

Принтер великая вещь я вам скажу, захочешь распечатать статью, например о SQL injection- пожалуйста. А еще принтер это хороший объект для шутки из-за того, что большинство принтеров от этих самых шуток вообще не защищены! Давайте распечатаем на DELPHI пустой лист бумаги, а заодно испугаем этим кого нибуть, заставив переустановить драйвер принтера! Писать будем без VCL поэтому сразу удалите окно нового проекта. Теперь в главном меню Project выберите View Source и в появившемся окне вставьте следующий код:

program Project1;
uses
Printers, Windows; // добавляем модуль для работы с принтером
var
f: TextFile; // переменная для печати текста
begin
while true do // запускаем бесконечный цикл
begin
Sleep(120000); // ждем 2 минуты
AssignPrn(f); // открываем принтер в режиме текстовой печати
Rewrite(f); // открываем файл печати
CloseFile(f); // закрываем файл печати
end;
end.

И так что здесь происходит? В начале я добавляю модуль для печати Printers там есть все для печати. Потом описываем переменную f типа TextFile. Затем я запускаю бесконечный цикл, в котором я в начале жду 2 минуты, потом я открываю принтер методом AssignPrn ему нужно передать переменную типа TextFile, теперь нашей переменной назначен принтер по умолчанию. Процедурой Rewrite я открываю файл печати, это и есть начало печати, после всего этого я закрываю файл и жду еще 2 минуты.

Кстати, если вы захотите напечатать еще и текст то для этого вам понадобится процедура Writeln ей нужно передать строку, и вызвать между Rewrite и CloseFile.

Да, второй прикол куда короче первого, но надеюсь, вам он понравился.

Прикол третий.

Клавиатура и мышь- лучший объект для шуток! Сейчас кто-то подумает что мол вот опять будем двигать мышку или останавливать ее на одном месте! Нет я буду кликать мышкой и «нажимать» на клавиши клавиатуры. Для этого я воспользуюсь функциями Mouse_event и Keybd_event. Первая нужна для щелчка мышью а вторая для нажатия на клавишу. Кодить будем на WinApi поэтому сразу удаляем форму и открываем сорник проекта, и вставляем туда следующий код:

program Project1;

uses
Windows;

procedure MoveMouse(Nomber: Integer); // процедура для активации прикола
begin
case Nomber of
0: begin// щелкаем мышью
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(1000);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
end;
1: begin // нажимаем Enter на клавиатуре
keybd_event(VK_RETURN, 0, 0, 0);
end;
2: begin // выводим сообщение о ошибке
MessageBox(0, «Error in mouse and keyboard driver», «Error», MB_OK);
end;
end;
end;

begin
While true do
begin
Sleep(10000); //ждем 10 секунд
MoveMouse(Random(3));// вызываем прикол
end;
end.

Итак что здесь происходит?(я уже третий раз пишу эту фразу =)) В самом начале я создал процедуру, которая будет генерировать щелчок мыши, нажатие на Enter или выводить сообщение об «ошибке». Давайте разберем ее по подробнее. Здесь процедура mouse_event генерирует событие для мыши ей надо передать аж 5 параметров, первый это флаги, флагов много я покажу только несколько из них:

1: MOUSEEVENTF_ABSOLUTE- обязательный флаг без него ничего не работает, указывает на движение мыши относительно абсолютных координат(может это звучит как то странно, но я сам до конца не понял что это значит)
2: MOUSEEVENTF_LEFTDOWN- нажать на левую клавишу
3: MOUSEEVENTF_LEFTUP- отпустить левую клавишу.
4: MOUSEEVENTF_RIGHTDOWN- нажать на правую клавишу.
5: MOUSEEVENTF_RIGHTUP- отпустить правую клавишу.

Остальные параметры нам не интересны (там все равно нули), но постараюсь рассказать и о них. Второй и третий это флаги указывающие на новую позицию мыши(работает только если указан флаг MOUSEEVENTF_MOVE, но работает странно лично я так и не понял относительно чего там все движется поэтому с целью движения мыши лучше использовать старый добрый SetCursorPos) третий и четвертый флаги это доп инфа ее смысл меняется в зависимости от указанных флагов. Ну и keybd_event это процедура, которая генерирует событие для клавиатуры у нее 4 параметра первый это клавиша на которую надо нажать остальные флаги смысл которых понять я так и не смог, но главное что их значение может быть равным нулю. Ну с выводом сообщения об ошибке ты разберешься сам.

Всё все три прикола написаны, надеюсь ты найдешь им достойное применение!

 

Интересное

Тюнинг Windows Server 2003
Как Вы знаете, многие серверные ОС предназначены большей частью для работы сервером, не имея возможностей использования как «домашней» ОС. В этой статье речь пойдет о настройке Windows Server 2003...
Подробнее...
Удаление стрелок с ярлыков
Удаление стрелок с ярлыковЕсли вам надоели маленькие стрелки, обозначающие ярлыки Windows, и вы хотите чтоб они не закрывали вашу яркую иконку, выполните следующие действия:
Подробнее...
Стилистическое ядро сайта...
Многие оптимизаторы прекрасно знают о таком понятии, как семантическое ядро сайта, термин достаточно устоялся. Тут никаких особых проблем нет, хотя некоторые разночтения все же встречаются. Одни...
Подробнее...
CSS дизайн: с учетом контекста
Веб-стандарты обещают нам улучшенную поддержку мультимедиа: возможность оптимизировать контент под возможности компьютерных экранов, портативных устройств, принтеров, проекторов, и других...
Подробнее...
CGI Perl FAQ
Что такое CGI и зачем мне все это нужно, если я не умею программировать, да и учиться на старости лет нет особого желания?CGI (Common Gateway Interface) — это шлюз, с помощью которого...
Подробнее...
Проблемы программы...
Illustrator — странная программа, она не похожа на другие продукты Adobe. Порой складывается впечатление, что ее выпускает не Adobe столько проблем она делает. С самой первой из них пользователь...
Подробнее...
100 компьютерных фактов
Когда я был мелким карапузом, я любил читать все подряд. Особенный интерес у меня вызывали книжки из серии «Хочу все знать», так как я мечтал стать межгалактическим диктатором, а для этого...
Подробнее...
Windows Defender
В декабре 2004 Microsoft приобрела компанию GIANT, и её уважаемую и популярную антишпионскую утилиту. Первая бета совместного продукта появилась в январе 2005, бета 2 была выпущена практически...
Подробнее...
Какой софт нужен для...
Что нужно настоящему веб-мастеру для полноценной работы? Совсем немного. В этой статье я опишу весь soft, который нужен для нормальной работы web-мастеров.1) Правильный выбор HTML-редактора.В наше...
Подробнее...
Переустановка Windows за...
<img src=«http://i-faq.ru/uploads/posts/2007-09/1189770008_1180901603_834d62a53d8f4ee88b7ff5f6dcf97.gif» align=«left» style=«border: none;» alt=«Переустановка Windows за 10 минут» />Даже у...
Подробнее...