Лови мышь! Мой любимый способ сделать кому нибудь zло - убить мышь. Но по своей природе я гуманный человек и мне не хочется убивать зверей. Что можно ещё сделать с этим несчастным существом? Правильно. Заставить её побегать. Создавай пустой текстовый файл и набивай следующее:
CODE program MadMouse;
uses Windows;
var tmp: boolean=true; begin randomize; repeat SetCursorPos(random(1024), random(768)); sleep (500); until tmp; end.
Сохраняй все это добро сохраняй и присвайвай файлу расширение dpr. Запускай дельфи, открывай этот файл, компилируй и неси к другу . Обьясняю со слова begin. Randomize инициализирует генератор псевдослучайных чисел. Процедура SetCursorPos(random(1024), random(768)) перемещает курсор в случайные координаты экрана (random(x) random(y)). Sleep - ждать 500мс (полсекунды). Ожидание можно сделать и подольше, что бы жертва ничего не заподозрила. Ну и все это повторяется пока tmp=true. А tmp=true навечно . Значит все это будет выполняться пока процесс не снимут или не перезагрузят компьютер. Можно из программы сделать монстра - заставив прятаться от Alt-Ctrl-Del и прописываться в автозагрузку. Как это реализовать я надеюсь ты поймешь. Итого рзамер екзешника - 8Kb. Неплохо, правда?
Лопнувшие глаза Поиздевавшись над мышой давай поиздеваемся над экраном. Создавай, сохраняй, компилируй так, как это было описано выше:
CODE program BlackDeep;
uses Windows, Graphics;
var dt : TCanvas; begin Randomize; dt := TCanvas.Create; dt.handle:= GetDC(0); while true do begin Yield; dt.Pixels[Random(1024), Random(768)]:=0; end; end.
Здесь экзешник получится помощнее - 120Kb. Все это из-за модуля Graphics, без которого никакой заподлянки не будет. Наша программа делает следуеще. Инициализируется генератор случайных чисел (Randomize). Затем создается обьект dt типа TCanvas (dt := TCanvas.Create). Берем описание устройства "Экран" и присваиваем его описанию dt (dt.Handle := GetDC(0)). Потом запускаем цикл (while true do), даем выполниться ожидающей задаче (Yield) и заполняем случайный пиксел экрана черным цветом (dt.Pixels[Random(1024), Random(768)]:=0;). На первый взгляд кажется сложно, но на самом деле все просто. Мне, кстати, очень нравится, что делает программа (только не надо называть меня извращенцем)... Так что я иногда запускаю её, что бы полюбоваться этим зрелищем. Но не советую увлекаться этим на Win9x/ME, а то придется перезагружаться.
Сумасшедшая винда Все знают, что винда глючная. Щас мы сделаем её еще глючнее... Создавай текстовый файл и пиши:
CODE program MadWinda;
uses Windows;
var CurrWnd:HWND; begin while true do begin CurrWnd:=GetForegroundWindow; SetWindowText(CurrWnd, From Windows with Love); Sleep(5000); end; end.
Компилируй это, а я расскажу что делает программа. Запускается бесконечный цикл, в котором мы считываем описание активного окна в переменную CurrWnd (CurrWnd:=GetForegroundWindow). Затем этому окну через описание (CurrWnd) меняем заголовок (SetWindowText(CurrWnd, From Windows with Love)). Потом ждем 5 сек и начинаем все сначала. Вот такая простенькая и оргиниальная заподлянка размером в 8Kb.
Прячем панель задач Ну как же обойтись без классики zаподлостроительства? Создай пустой текстовый файл с расширением dpr и впиши это:
CODE program HideTaskbar;
uses Windows;
begin ShowWindow(FindWindow(Shell_TrayWnd, nil), SW_HIDE); end.
Вот и все! Такая вот заподлянка размером всего в одну процедурку! Тут и обьяснять то нечего. Программа ищет окно Shell_TrayWnd и прячет его. Что бы показать панель задач, вместо SW_HIDE напиши SW_SHOW.
Танцуют все! Ну все, винду помучили. Экран и мышь тоже. Что ещё осталось? Ах да, старая добрая тетя клава. Щас мы заставить её перемигиваться лампочками. Создавай проект и пиши:
CODE Program TancuytVse;
uses Windows;
var KS:TKeyboardState; i:integer;
begin while true do begin randomize Yield; Sleep(10000); GetKeyboardState(ks); i:=Random(2); case i of 0:KS[020]:= KS[020] XOR 1; 1:KS[144]:= KS[144] XOR 1; 2:KS[145]:= KS[145] XOR 1; end; SetKeyboardState(ks); end; end.
Здесь запускается бесконечный цикл, в котором сначала инициализируем генератор псевдослучайных чисел (randomize), потом даем выполнится ожидающей задаче (Yield), делаем паузу в 10 сек. (Sleep(10000), запрашиваем состояние клавиатуры (GetKeyboardState(ks)), генерируем случайное число и на его основе виртуально нажимаем на клавишу NumLock, CapsLock или ScrollLock. Предупреждаю, что этот трюк не пройдет в NT-подобных системах (WinNT, 2000 и XP).
Обкурившийся CD-RoM Ну и напоследок опишу ещё одну классическую заподлянку. Создавай и пиши:
CODE program CrazyCD;
uses windows, MMSystem;
var OpenParm: TMCI_Open_Parms; GeneralParm: TMCI_Generic_Parms; SetParm: TMCI_Set_Parms; Crd : Cardinal; begin while true do begin OpenParm.lpstrDeviceType := CDAudio; mciSendCommand(0, mci_Open, mci_Open_Type, Longint(@OpenParm)); Crd := OpenParm.wDeviceID; mciSendCommand(Crd, mci_Set, mci_Set_Door_Open, Longint(@SetParm)); mciSendCommand(Crd, mci_Set, mci_Set_Door_Closed, Longint(@SetParm)); mciSendCommand(Crd, mci_Close, mci_Notify, Longint(@GeneralParm)); sleep(10000); end; end.
Эта программа несмотря на подключенный модуль MMSystem занимает всего 8 килобайт. Здесь, как и во всех наших заподлянках, запускается бесконечный цикл, во время которого происходит следуещее. Заполним поле lpstrDeviceType параметром CDAudio, указывающее на сидюк. Потом пошлем mci команду mciSendCommand(0, mci_Open, mci_Open_Type, Longint(@OpenParm))) Переменной типа Cardinal присвоим ID девайса (Crd := OpenParm.wDeviceID). Затем последовательно посылаем команды mci_Set и mci_Close. Ждем 10 секунд и повторяем. Заморочено, но работает .