VR
Virtual Reality On-line   Хакер
Новости   |     Журнал    |    Хаkер   |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]
[ Download  ]
[  Конкурс  ]
[  Анекдоты ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Центр управления полетами кнопки «Пуск»:

Помнится, я первый раз увидел Windows95. Мне так понравилась кнопка «Пуск», что я ее полюбил до глубины «Выключить компьютер». Вскоре в нашем институте обновили парк машин и на них тоже поставили Win95. Мне так захотелось приколоться над бедными однокурсниками, что я написал прогу, которая подбрасывала кнопку «Пуск». Сказано - сделано, написал и запустил на всех машинах. С каждым взлетом кнопки пуск, ламеры испуганно взлетали вместе с ней :). А через некоторое время я увидел и в инете подобный прикол.

Предыстория:

А что еще сказать? Все и так ясно. Сейчас я повторю свой предыдущий подвиг и покажу тебе, как самому написать такую прогу. Так что усаживайся поудобнее, наша кнопка «Пуск» взлетает на высоту 100 пикселей:). И в этом нам поможет наш любимый дядя Борман с великолепным другом Delphi.

Но прежде чем начать, нужно подготовить. Картинку с изображением кнопки «Пуск». Для этого ты можешь нарисовать ее своими руками в любом графическом редакторе. Ну а если ты IBM совместимый чел:), то можешь нажать кнопку PrtSc чтобы запомнить содержимое экрана, а потом выполни вставку в любой графическом редакторе. Далее, простыми манипуляциями вытягивай изображение кнопки в отдельный файл.

На старт:

Создавай новый проект в Delphi. Сразу сохрани его. Теперь изменим параметры окна. Для этого переходим в объектный инспектор. Здесь параметр BorderStyle устанавливаем в bsNone, чтобы у него не было никаких обрамлений. Параметр FormStyle устанавливаем в fsStayOnTop, чтобы окно всегда располагалось поверх других. Все, форма готова.

Теперь нужно бросить на форму компонент Image с палитры компонентов Additional. На форме появится соответствующий компонент с именем Image1. Щелкни по нему и снова переходи в объектный инспектор. Параметр Left и Top установи в 0, чтобы картинка располагалась точно в левом верхнем углу.
Logo
Рисунок 1.

Теперь дважды щелкни по параметру Picture и перед тобой появится окно, в котором можно загрузить в компонент картинку (рисунок 1). Нажми кнопку “Load” и выбери файл, в котором у тебя сохранена картинка кнопки «Пуск». После этого установи свойство AutoSize у Image1 в true, чтобы компонент стал размером с рисунок.
Logo
Рисунок 2.

Ок. Форма почти готова. Осталось только поправить ширину и высоту окна, чтобы оно было размером с картинку. С высотой у тебя проблем не будет. Ты можешь без проблем менять ее как угодно. А вот ширина не может быть меньше чем ширина кнопок на обрамлении. Но и это мы победим.

Теперь щелкни по форме и перейди на закладку Events. Дважды щелкни по событию OnShow, чтобы создать такой обработчик события. Он будет вызываться при показе окна. В нем напиши содержимое листинга 1. Здесь я устанавливаю значения ширины и высоты окна. Как ты помнишь, у нас были проблемы с установкой этих значений визуально, а так мы в наглую задаем то, что нам нужно. Твои значения могут быть другими, все зависит от того, какого размера получилась твоя кнопка. Моя вышла габаритами 21х51.

Теперь брось на форму Timer с палитры компонентов System. В его свойствах нужно изменить значение Interval. По умолчанию оно равно 1000 миллисекунд (1 секунда). Для нас больше подойдет 10000 (10 секунд). Не резон, если «Пуск» будет летать каждую секунду. Такими темпами он может даже не успеть приземлится. Теперь перейди на закладку Events и дважды щелкни по событию OnTimer. Создастся обработчик события, который будет вызываться каждые 10 секунд (значение свойства Interval). Здесь мы развернем центр управления полетом кнопки «Пуск». В этом обработчике напиши содержимое листинга 2. Я не буду описывать его содержимое, потому что журнал не резиновый. Так что смотри на комментарии, там можно со всем разобраться.

В принципе, прога готова и ее можно запускать. Но если ты сделаешь это, то она засветится в TaskBar, что абсолютно не допустимо для проги-прикола. Давай напишем код, который спрячет наше приложение о грозного глаза Taskbar. Для этого выбери пункт меню View Source из меню Project. Перед тобой появится исходник самого проекта. Сравни его с листингом 3 и нужное допиши. Чтобы тебе было проще, изменения произошли там, где есть комментарии.
Logo
Рисунок 4.

Все. Играйся на здоровье. Только будь осторожен. Слабонервные ламеры при видя летающей кнопки могут уйти в бессознательное состояние на пару десятков лет:). Нашатырь тут уже не поможет. Так что за побочные действия отвечать будешь сам.

Листинг 1:
procedure TForm1.FormShow(Sender: TObject);
begin
 Width:=51;//Установить ширину окна
 Height:=21;//Установить высоту
 Left:=-100;//Убрать окно за левую границу экрана.
end;


Листинг 2:
procedure TForm1.Timer1Timer(Sender: TObject);
var
 i:Integer; 
 h:THandle;
begin
//Сделать окно видимым.
 Visible:=true;
//Установить верхнюю позицию окна в левый нижний угол экрана.
 Top:=Screen.Height-Height;
 Left:=1;
//Создаю пустой указатель h который буду использовать для задержки.
 h:=CreateEvent(nil, true,false, 'et');

//Сейчас будем подымать кнопку
// От 1 до 80 выполнять действия от begin до end
 for i:=1 to 80 do
  begin
  //Увеличить значение верхней позиции окна с кнопкой.
   Top:=Screen.Height-Height-i*5;
   Repaint; //Перерисовать окно
   WaitForSingleObject(h,15);//Задержка в 5 миллисекунд.
  end;

//Дальше идет опускание кнопки. Алгоритм тот же, 
//просто выполнение идет в обратном порядке
 for i:=80 downto 1 do
  begin
   Top:=Screen.Height-Height-i*5;
   Repaint;
   WaitForSingleObject(h,15);
  end;

//Уничтожаю указатель h
 Closehandle(h);
//Прячу окно.
 Visible:=false;
end;


Листинг 3:

program Project1;

uses
  Forms, 
  Windows,// Это я добавил модуль Windows
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

//Далее я добавил новую переменную
var EStyle : integer;
begin
  Application.Initialize;

//Далее идет установка невидимости приложения
  EStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE);
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
    EStyle or WS_EX_TOOLWINDOW);

//Остальное не менять
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Copyright©: Horrific aka Флёнов Михаил
Design by FMk group©