Delphi. Учимся на примерах | страница 68



>//координаты по у

> //устанавливаем новые координаты указателя

SetCursorPos(StrToInt(x), StrToInt(у));

>end;

При получении текста мы считываем в отдельные переменные значение координат указателя по X и по Y. Затем изменяем координаты на те, которые только что получили от клиента.

Теперь программа полностью готова, и для того чтобы протестировать ее, необходимо иметь хотя бы два компьютера, объединенные в локальную сеть или подключенные к Internet.

Полный исходный код модулей

Полный код модуля серверной программы представлен в листинге 16.1.

Листинг 16.1. Модуль серверной программы

>unit Unit1;


>interface


>uses

> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp;


>type TForm1 = class(TForm)

> ServerSocket1: TServerSocket;

> procedure FormDestroy(Sender: TObject);

> procedure FormCreate(Sender: TObject);

> procedure ServerSocketlClientRead(Sender: TObject; Socket: TCustomWinSocket);

> procedure FormPaint(Sender: TObject);

>private

> { Private declarations }

>public

> { Public declarations }

>end;


>var

> Form1: TForm1;


>implementation

>{$R *.dfm}


>procedure TForm1.FormDestroy(Sender: TObject);

>begin

> ServerSocket1.Active:= False; //отключаем сервер

>end;


>procedure TForm1.FormCreate(Sender: TObject);

>begin

> ServerSocket1.Active:= True; //активизировать сервер

>end;


>procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);

>var

> str, x, y: string; //полученный текст и координаты

>  //указателя по X и по Y

> i, j: integer; //счетчики циклов

> begin

> //обнуляем координаты курсора

> х := ' ';

> у := ' ';

> str:= Socket.ReceiveText; //полученный от клиента текст

> for i:=1 to Length(str) do begin

>  if str[i] <> '_' then x:= x + str[i]; //координаты по х

>  if str[i] = '_' then Break; //разделитель между

>   //координатами указателя

> end;

> for j:= i+1 to Length(str) do у:= y+str[j]; //координаты по у

> //устанавливаем новые координаты указателя

> SetCursorPos(StrToInt(x), StrToInt(у));

>end;


>procedure TForm1.FormPaint(Sender: TObject);

>begin

> Form1.Hide;

>end;


>end.

Полный код модуля клиентской программы представлен в листинге 16.2.

Листинг 16.2. Модуль клиентской программы

>unit Unit1;


>interface


>uses

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


>type TForm1 = class(TForm)

> Button1: TButton;

> Button2: TButton;

> Client: TClientSocket;

> Timer1: TTimer;

> port: TEdit;

> ip: TEdit;

> Label1: TLabel;

> Label2: TLabel;

> procedure Button2Click(Sender: TObject);