Нас ребут, а мы крепчаем!

AvaLANche (kolyan@rnc.ru)

Спецвыпуск Хакер, номер #004, стр. 004-114-1

Let the party begin!

Итак, начнем! Берем твою любимую Дельфю и создаем новый проект (в меню главного окна: File -> New Application).

Я не люблю всяких имен по дефолту, поэтому сразу обзываем появившуюся форму, например, 'SuperForm' (в Object Inspector`е поле 'Name'), меняем ее заголовок (Caption) на что-нибудь типа 'sHUTiTdOWN - не дай виндам засохнуть!' и делаем ее диалогом: BorderStyle правим на bsDialog. Теперь тащим на форму label, checkbox, два radiobutton`а, прогрессбар и таймер. Что, грузанул я тебя? Ну, тогда объясняю в чем маза: label - просто текст на окне, checkbox - пимпа с флажком, radiobutton - круглая фигулька с точкой внутри (все это во вкладке 'Standard' списка компонентов), progressbar показывает прогресс выполнения какого-нибудь процесса (например, когда ставишь софтину в setup`е, он показывает, сколько файлов скопировано, и т.п.), находится этот бар во вкладке 'Win32', а таймер и в Гондурасе таймер (вкладка 'System'). Эти фичи нужны для пущего западла, а вот label тебе пригодится во время отладки проги или когда будешь заценять, как она пашет: через него ты будешь шатдаунера нашего закрывать.

"Все еще только начинается!" ;-) (C) Санта-Барбара

Все свойства объектов меняются просто: выбираешь жертву истязаний и в Object Inspector`е редактируешь нужное свойство.

Сначала обзовем радиобатоны и поменяем их подписи (Caption): первый - на 'ToPowerOff', кэпшн - на 'повер офф!'; второй - на 'ToReboot', кэпшн - на 'ребут'. Это все нам дальше пригодится. Таймер называем 'DeathTimer', а прогрессбар просто: 'ProgressBar'. Теперь меняем имя чекбокса на 'ForceBox' и кэпшн на что-то типа 'Force - с потерей всех данных', а вообще по твоему вкусу. Эта феня нужна для очередного глумления над твоим приятелем, заюзающим эту прогу. Представь: жмет он на него, жмет, а винды все равно отрубятся в режиме 'force', т.е. никто не будет спрашивать у запущенных приложений разрешения на взлет. Ты еще помнишь про ма-аленький label (или он у тебя во все окно получился? :))? Вспоминай! Он нам дальше пригодится, а пока лучше назови его 'Title' и напиши в нем заголовок проги, например, 'sHUTiTdOWN'.

Займемся кодингом

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

var

progress : integer; //сколько набежало в прогрессбаре

Want2SwitchOff : byte = 0; //сколько раз кликнули по label`у, чтобы прога закрылась

ReallyClose : boolean = false;//после 5-ти кликов будет true, и все, финита :)

Если ты пока не понял, для чего эти переменные нужны, не кидай ломом в монитор! :) Скоро все станет ясно даже одноногой табуретке :)).

Теперь нужно сделать так, чтобы сколько наш бедный ламер на чекбокс ни давил, флажок все равно стоял. :) Делается это так: кликаешь два раза по твоей пимпе с флажком и в открывшемся окне редактирования кода, внутри функции ForceBoxClick, пишешь:

ForceBox.Checked := true;

Готово! Сейчас сделаем, чтобы прогу обычными средствами (Alf-F4 или крестиком) нельзя было отрубить. Выбираем вкладку 'Events' в свойствах формы (все как обычно в Object Inspector`е), а там создаем обработчик события OnClose. В нем пишем:

Содержание  Вперед на стр. 004-114-2

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001