Delphi. Учимся на примерах - [32]

Шрифт
Интервал

Листинг 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 //если нажата клавиша

> 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. Форма клиентской программы для удаленного управления указателем

Разработка программного кода

По нажатию кнопки Connect должны считываться все настройки и выполняться соединение с сервером:

>procedure TForm1.Button1Click(Sender: TObject);

>begin

> Client.Port:= StrToInt(port.Text); //считываем порт

> Сlient.Address:= ip.text; //считываем ip-адрес сервера

> Client.Active:= True; //соединяемся

Timer1.Enabled:= True; //включаем таймер

>end;

Сначала мы считываем все необходимые настройки, а затем предпринимаем попытку соединиться с сервером. Если все нормально, то включаем таймер, по которому будут передаваться координаты указателя мыши.

Обработаем нажатие кнопки Disconnect:

>procedure TForm1.Button2Click(Sender: TObject);

>begin

> Timer1.Enabled:= False;//выключаем таймер

> Client.Close; //закрываем соединение

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

>end;

При нажатии кнопки Disconnect мы перестаем передавать координаты указателя на сервер и отсоединяемся от него.


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.