LPT терминатор - программа дистанционного управления компьютером.
____________________________________


А теперь перейдём к самому любимому занятию студентов и практикантов - разыгрывать ламеров. Оно, конечно, все мы в той или иной степени ламеры, однако это вовсе не означает что нужно сидеть сложа руки (под яблоней), ожидая когда придёт озарение или посыпеться манна небесная, дабы таким способом поднять свой профессиональный уровень и показать однокурсникам где коды зимуют.

И так, открываем Делфи и изучаем одну небезинтересную программу - LPTterminator
  LPT терминатор - программа дистанционного управления компьютером.
Работает она так: когда на соответствующем входном бите LPT порта появляется логический ноль программа, которая благодаря настройкам может быть невидима, после срабатывания датчика, пославшего соответствующую команду, выводит устрашающее окно с мигающей надписью "ИГРА ОКОНЧЕНА !" и полем ввода пароля. Если пароль введён правильно - действие команды будет отменено и покажется главное окно программы с настройками. Если же нет - тогда по истечении времени ввода пароля будет исполненно соответствующие действие.
 LPT терминатор - программа дистанционного управления компьютером.
Один мой знакомый, в своё время, незаметно подключил в жгут проводов вместо поломанного на тот момент принтера компа своего препода, детектор радиоизлучения (на основе польского антенного усилителя) к подобного типа программе,( немного модифицированной чтобы в ALT + CTRL + DEL ёё не было видно и с автозагрузкой через реестр и без заставки ) и когда у него звонил мобильник - компьютер просто выключался! Дошло до того, что препод во время лекций вообще выключал мобильник. И сейчас мы рассмотрим аналогичный пример.

Смотрим код::

______________________________________________________________

Рассмотрим модуль Form1 (Unit1) :

{Опрашиваем датчики на входах порта}

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if SpeedButton1.Tag = 0 then //--если не отключено тогда:

begin

CheckBox1.Checked := not Pin10; //--если на 10 ножке логический 0 тогда галочка

CheckBox2.Checked := not Pin11; //--аналогично

CheckBox3.Checked := not Pin12;

CheckBox4.Checked := not Pin13;

CheckBox5.Checked := not Pin15;

{проверяем наличие галочки на любом из чекбоксов}

if (CheckBox1.Checked = true) or //-- or - значит "или"

(CheckBox2.Checked = true) or

(CheckBox3.Checked = true) or

(CheckBox4.Checked = true) or

(CheckBox5.Checked = true) then //--если ДА тогда:

begin

Timer1.Enabled := false; //-- выключаем таймер опроса

Form1.Hide; //--скрываем главную форму

Form2.ShowModal; //--показываем форму2 "ИГРА ОКОНЧЕНА !"

end ;

end ;

end;

procedure TForm1.SpinEdit1Change(Sender: TObject);

begin

Timer1.Interval := SpinEdit1.Value *1000; //--установка частоты опроса датчиков

end ;

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

if SpeedButton1.Tag = 0 then //--выключаем

begin

SpeedButton1.tag := 1;

CheckBox1.Enabled := false;

CheckBox2.Enabled := false;

CheckBox3.Enabled := false;

CheckBox4.Enabled := false;

CheckBox5.Enabled := false

end else

begin

SpeedButton1.tag := 0; //--включаем

CheckBox1.Enabled := true;

CheckBox2.Enabled := true;

CheckBox3.Enabled := true;

CheckBox4.Enabled := true;

CheckBox5.Enabled := true;

end ;

end ;

procedure TForm1.FormActivate(Sender: TObject);

begin

Application.HintColor := cllime;

end;

procedure TForm1.SpinEdit3Change(Sender: TObject);

begin

Form2.Label1.Caption := IntToStr(SpinEdit3.Value); //--обратный отсчет до выполнения действия

end;

procedure TForm1.Timer2Timer(Sender: TObject);

begin

Timer2.Interval := SpinEdit2.Value * 60000; //--сколько минут быть программе невидимой

Form1.Show; //--показаться

Timer2.Enabled := false; //--отключить таймер

end;

procedure TForm1.SpeedButton2Click(Sender: TObject); //--кнопка СКРЫТЬ

begin

Form1.Hide; //--скрываем

Timer2.Enabled := true; //--включаем таймер "показать через"

end;

procedure TForm1.SpinEdit2Change(Sender: TObject);

begin

Timer2.Interval := SpinEdit2.Value * 60000; //--установка интервала в минутах

end;




{Для показа Form2 (Unit2) нажмите Shift + F12}

Далее рассмотрим модуль Form2 (Unit2) :

private

{ Private declarations - здесь находятся исполняемые команды }

//**************************************************************************

procedure NoDes;

procedure OFF;

procedure Reset;

procedure NoMaus;

procedure NoKeyb;

//**************************************************************************

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses LPTIO, Unit1; //--подлючаем модули с помощью Alt + F11



{$R *.DFM}

procedure TForm2.Timer1Timer(Sender: TObject);

begin

Label1.Caption := IntToStr(StrToInt(Label1.Caption)-1); //--обратный отсчёт

if Label2.Font.Color = clred then //--мигает устрашающая надпись "ИГРА ОКОНЧЕНА !"

Label2.Font.Color := claqua else

Label2.Font.Color := clred;

if Label1.Caption = '0' then //--закрываем когда истекает время ввода пароля

begin

close;

Timer1.Enabled := false; //--таймер больше не нужен

end;

end;

procedure TForm2.FormShow(Sender: TObject);

begin

Timer1.Enabled := true; //--на показ формы (с черепом) включаем таймер отсчёта

Label1.Caption := IntToStr(Form1.SpinEdit3.Value); //--устанавливаем время что осталось до срабатывания

end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); //--все действия выполняем на закрытие формы

begin

if Form1.Edit1.Text = Edit1.Text then //--если введённый пароль совпадает

begin

Form1.Timer1.Enabled := true; //--включаем таймер опроса

Form1.Show; //--показуем программу как обычно

end else //--зато если не совпадает тогда злобствуем

begin

{Здесь разместите выполняемые действия}

if Form1.CheckBox1.Checked = true then OFF; //--выключаем комп

if Form1.CheckBox2.Checked = true then Reset;//--перезагружаем комп

if Form1.CheckBox3.Checked = true then NoMaus; //--отключаем мышу

if Form1.CheckBox4.Checked = true then NoKeyb; //--отключаем клавиатуру

if Form1.CheckBox5.Checked = true then NoDes;//--отключаем рабочий стол

end;

{Всё восстанавливается как было после перезагрузки, так что не бойтесь!}

end;

procedure TForm2.Image1Click(Sender: TObject);

begin

close; //--принудительное закрытие формы

end;

{Это команды из Windows9x Вы можете их не использовать, а вставить любые свои}

//**********************КОМАНДЫ*************************************************

procedure TForm2.NoDes;

var

Wnd:THandle;

begin

Wnd := FindWindow('Progman', nil ); // отключаем рабочий стол - работает и в ХР

Wnd := FindWindowEx(Wnd, HWND(0),'ShellDll_DefView', nil );

ShowWindow(Wnd, SW_HIde);

end;

 

procedure TForm2.OFF; //--выключаем компьютер

begin

WinExec(PChar('rundll32 shell32,SHExitWindowsEx 1'), SW_Show);

end;

 

procedure TForm2.Reset; //--Рестарт

begin

WinExec(PChar('rundll32 shell32,SHExitWindowsEx 2'), SW_Show);

end;

 

procedure TForm2.NoMaus; //--отключаем мышку

begin

WinExec(PChar('rundll32 mouse,disable'), SW_Show);

end;

 

procedure TForm2.NoKeyb; //--пугаем и предлагаем выбор

begin

if MessageBox(Handle,PChar('Вы действительно хотите отключить клавиатуру ? '), PChar('Игра окончена !'),MB_ICONWARNING + MB_YESNO +MB_DEFBUTTON2) = mrYes

then

begin

WinExec(PChar('rundll32 keyboard,disable'), SW_Show);

end else //--предоставляем шанс

begin

Form1.Timer1.Enabled := true;

Form1.Show;

end ;

end;

//******************************************************************************

 

end;



Cкачайте этот пример - primer_xp04.zip(30 kb)

Cкачать готовую программу - LPTterminator.zip (198 kb)

Смотрите дальше: Шаг 5. Системы автоматизации процессов. Digital Avto Tuning - программа автоматической подстройки кода



******



Валерий Ковтун US4LEH
http://valery-us4leh.narod.ru

О сайте

Вернуться на Шаг3. Виртуальные приборы: программа LPT генератор 5 - 600 Гц

Вернуться на XP LPT

Вернуться на главную страницу

Программа PortControl V3+
Программа PinRegistrator D1+


Гостевая книга
Обратная связь


Hosted by uCoz