Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Учимся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 23

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ ΠŸΠ°Ρ€ΠΈΠΆΡΠΊΠΈΠΉ

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ рис. 15.1.

Рис. 15.1. Π€ΠΎΡ€ΠΌΠ° для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний Π² локальной сСти

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго напишСм ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ bomb, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ всС настройки ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСниС. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ эту ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΊΠ°ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ‡Π»Π΅Π½ класса Ρ„ΠΎΡ€ΠΌΡ‹:

type

 TForm1 = class(TForm)

 β€¦

private

 { Private declarations }

 procedure bomb();

public

 { Public declarations }

end;

Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ понадобится глобальная пСрСмСнная i Ρ‚ΠΈΠΏΠ° integer:

var

 Form1: TForm1;

 i: integer;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ bomb Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ implementation:

procedure TForm1.bomb();

begin

 //провСряСм, Π½Π΅ пустоС Π»ΠΈ тСкстовоС сообщСниС

 if txt.Text = '' then txt.Text:= '!';

 //Ссли количСство Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎ отправляСм ΠΎΠ΄Π½ΠΎ сообщСниС

 if how.Text= '' then how.Text:= '1';

 if ip.Text = '' then ip.Text:= '127.0.0.1'; {Ссли ip-адрСс Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Ρ‚ΠΎ отправляСм Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€}

 //отправляСм ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство сообщСний

 for i:=1 to StrToInt(how.Text) do

  WinExec(PChar('net send ' + ip.Text + '"' + txt.Text + '"'), 0); //ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния

end;

Π’ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ выполняСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°: всС Π»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ поля Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. Если Π½Π΅Ρ‚ тСкста сообщСния, Ρ‚ΠΎ устанавливаСм Π·Π½Π°ΠΊ "!"; Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ IP-адрСс, Ρ‚ΠΎ отправляСм сообщСниС Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ с адрСсом 127.0.0.1; Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ количСство сообщСний, Ρ‚ΠΎ отправляСм ΠΎΠ΄Π½ΠΎ сообщСниС. БообщСния ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ net send, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

net send ip-адрСс сообщСниС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ событиС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° OnTimer:

procedure TForm1.Timer1Timer(Sender: TObject);

var

 h: HWND; //Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°

begin

 if not secure.Checked then //Ссли Ρ„Π»Π°ΠΆΠΎΠΊ Π½Π΅ установлСн

  Timer1.Enabled:= False; //ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

 if secure.Checked then //Ссли Ρ„Π»Π°ΠΆΠΎΠΊ установлСн

 begin

  //ΠΈΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π° с сообщСниями

  h:= FindWindow(nil, 'Π‘Π»ΡƒΠΆΠ±Π° сообщСний '); //Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ всС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΎΠΊΠ½Π°

  if h <> 0 then PostMessage(h, WM_QUIT, 0, 0);

 end;

end;

Если установлСн Ρ„Π»Π°ΠΆΠΎΠΊ ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌ сообщСний, Ρ‚ΠΎ ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠΊΠΎΠ½, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это β€” сообщСниС, ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ всС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΎΠΊΠ½Π°. Если Ρ„Π»Π°ΠΆΠΎΠΊ Π½Π΅ установлСн, Ρ‚ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события secure.OnClick:

procedure TForm1.secureClick(Sender: TObject);

begin

 if secure.Checked then //Ссли Ρ„Π»Π°ΠΆΠΎΠΊ установлСн…

  Timer1.Enabled:= True; //β€¦Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

end;

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Send ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ просто Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ bomb:

procedure TForm1.Button1Click(Sender: TObject);

begin

 bomb;

end;

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Тизнь, сдСлаСм Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»Π°ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши <Enter> Π² любом тСкстовом ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события OnKeyPress для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ. Код этого ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° для поля ip, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ полям txt ΠΈ how:

procedure TForm1.ipKeyPress(Sender: TObject; var Key: Char);

begin

 if key = #13 then //Ссли Π½Π°ΠΆΠ°Ρ‚Π° клавиша <enter>

 bomb; //ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния

end;

ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ модуля

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ модуля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний ΠΏΠΎ локальной сСти прСдставлСн Π² листингС 15.1.

Листинг 15.1. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний ΠΏΠΎ локальной сСти

unit Unit1;


interface


uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;


type TForm1 = class(TForm)

 Button1: TButton;

 ip: TEdit;

 Label1: TLabel;

 Label2: TLabel;

 txt: TEdit;

 Label3: TLabel;

 how: TEdit;

 secure: TCheckBox;

 Timer1: TTimer;

 procedure Timer1Timer(Sender: TObject);

 procedure secureClick(Sender: TObject);

 procedure ipKeyPress(Sender: TObject; var Key: Char);

 procedure txtKeyPress(Sender: TObject; var Key: Char);

 procedure howKeyPress(Sender: TObject; var Key: Char);

 procedure Button1Click(Sender: TObject);

private

 { Private declarations }

 procedure bomb();

public

 { Public declarations }

end;


var

 Form1: TForm1;

 i: integer;


implementation

{$R *.dfm}


procedure TForm1.bomb();

begin

 //провСряСм, Π½Π΅ пустоС Π»ΠΈ тСкстовоС сообщСниС

 if txt.Text = '' then txt.Text:= '!';

 //Ссли количСство Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎ отправляСм ΠΎΠ΄Π½ΠΎ сообщСниС

 if how.Text= '' then how.Text:= '1';

 if ip.Text = '' then ip.Text:= '127.0.0.1'; {Ссли ip-адрСс Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Ρ‚ΠΎ отправляСм Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€}

 //отправляСм ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство сообщСний

 for i:=1 to StrToInt(how.Text) do

  WinExec(PChar('net send ' + ip.Text + '"' + txt.Text + '"'), 0); //ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния

end;


procedure TForm1.Timer1Timer(Sender: TObject);

var

 h: HWND; //Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°

begin

 if not secure.Checked then //Ссли Ρ„Π»Π°ΠΆΠΎΠΊ Π½Π΅ установлСн

  Timer1.Enabled:= False; //ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

 if secure.Checked then //Ссли Ρ„Π»Π°ΠΆΠΎΠΊ установлСн

 begin

  //ΠΈΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π° с сообщСниями

  h:= FindWindow(nil, 'Π‘Π»ΡƒΠΆΠ±Π° сообщСний '); //Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ всС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΎΠΊΠ½Π°

  if h <> 0 then PostMessage(h, WM_QUIT, 0, 0);

 end;

end;


procedure TForm1.secureClick(Sender: TObject);

begin

 if secure.Checked then //Ссли Ρ„Π»Π°ΠΆΠΎΠΊ установлСн…

  Timer1.Enabled:= True; //β€¦Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

end;


procedure TForm1.ipKeyPress(Sender: TObject; var Key: Char);

begin

 if key = #13 then //Ссли Π½Π°ΠΆΠ°Ρ‚Π° клавиша <enter>

 bomb; //ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

 bomb;

end;


end.

⊚ ВсС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ исполняСмый Ρ„Π°ΠΉΠ» рассмотрСнной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ находятся Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дискС Π² ΠΏΠ°ΠΏΠΊΠ΅ Chapter 15.

Π“Π»Π°Π²Π° 16

Π£Π΄Π°Π»Π΅Π½Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΌΡ‹ΡˆΠΈ

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π² точности повторяСт Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ всС двиТСния указатСля ΠΌΡ‹ΡˆΠΈ, сдСланныС Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² локальной сСти, Ρ‚Π°ΠΊ ΠΈ Π² Internet.

На самом Π΄Π΅Π»Π΅ Π½Π°ΠΌ придСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: пСрвая (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π΅ "ΠšΠ»ΠΈΠ΅Π½Ρ‚") Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ указатСля Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π΅ "Π‘Π΅Ρ€Π²Π΅Ρ€"), которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ указатСля Π½Π° присланныС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ связи называСтся "ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр" ΠΈ для Π΅Π³ΠΎ использования Ρƒ нас Π΅ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° стандартной ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Delphi. Π£ "ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°" Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ° с настройками, Π° "сСрвСр" Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π‘Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° клиСнтской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Delphi. ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ свойству Caption Ρ„ΠΎΡ€ΠΌΡ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Remote Mouse. РазмСститС Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Label ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Standard ΠΈ присвойтС Π΅Π³ΠΎ свойству Caption Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Port. Π‘ΠΏΡ€Π°Π²Π° ΠΎΡ‚ этой ΠΌΠ΅Ρ‚ΠΊΠΈ размСститС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Edit ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Standard. НазовитС Π΅Π³ΠΎ port (свойство name), Π° свойству text присвойтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2801.

НиТС размСститС Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Label, присвоив Π΅Π³ΠΎ свойству Caption Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ IP. Π‘ΠΏΡ€Π°Π²Π° ΠΎΡ‚ Π½Π΅Π³ΠΎ размСститС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Edit с ΠΈΠΌΠ΅Π½Π΅ΠΌ ip ΠΈ тСкстом 127.0.0.1.

Π’ самом Π½ΠΈΠ·Ρƒ Ρ„ΠΎΡ€ΠΌΡ‹ размСститС Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Button ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Standard), присвоив ΠΈΡ… свойству Caption значСния Connect ΠΈ Disconnect. Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ понадобится ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Timer ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ System. Π’ свойствах Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° слСдуСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Enabled Π½Π° False, Π° свойства Interval β€” Π½Π° 500 (Ρ‡Ρ‚ΠΎ соотвСтствуСт ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ сСкунды).

РазмСститС Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ самый Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” Client Socket ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Internet β€” ΠΈ присвойтС Π΅ΠΌΡƒ имя Client (свойство Name). ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ свойства этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ рис. 16.1.

Рис. 16.1. Π€ΠΎΡ€ΠΌΠ° клиСнтской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ управлСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°