Delphi. Учимся на примерах - [31]
> reg.RootKey:= HKEY_CURRENT_USER;
> //открываем раздел автозагрузки
> if reg.OpenKey('\Software\Microsoft\Windows\' +
> 'CurrentVersion\Run', True)
> then begin
> //записываем ссылку на нашу программу в автозагрузку
> reg.WriteString('Joker', path);
> reg.CloseKey;//закрываем реестр
> reg.Free;//освобождаем память
> end;
>end;
>end.
⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter_14.
Глава 15
Отправка сообщений в локальной сети
Постановка задачи
Разработать программу, которая будет предоставлять интерфейс для использования стандартной для Win2000/XP команды передачи сообщений net send. Дать возможность указать пользователю адрес получателя, текст сообщения и количество отправляемых сообщений. Также предусмотреть возможность установки блокировки на получение сообщений от других компьютеров.
Разработка формы
Создайте новый проект Delphi. Измените заголовок формы (свойство Caption) на Net Sender. Разместите вдоль левого края формы один над другим три компонента Label категории Standard и присвойте их свойству Caption значения IP-адрес:, Сообщение: И Количество:.
Рядом с каждой из меток разместите по компоненту Edit категории Standard. Самый верхний назовите ip (свойство Name), а свойству Text присвойте значение 192.168.0.1.; среднее поле назовите txt, а свойству Text присвойте какой-либо текст сообщения по умолчанию; самое нижнее поле назовите how, а свойству Text присвойте значение 1.
Под перечисленными компонентами разместите компонент Checkbox категории Standard. Присвойте ему имя secure, свойству Caption присвойте значение Отключить прием сообщений, а свойству Checked — значение True.
В самом низу формы разместите кнопку (компонент Button категории Standard), присвоив ее свойству Caption значение Send. Также нам понадобится таймер (компонент Timer категории System), для которого свойству Interval следует присвоить значение 10.
Полученная форма должна соответствовать рис. 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;
Для того чтобы облегчить пользователю жизнь, сделаем так, чтобы отправка сообщения осуществлялась также по нажатии клавиши
>procedure TForm1.ipKeyPress(Sender: TObject; var Key: Char);
>begin
> if key = #13 then //если нажата клавиша
> bomb; //отправка сообщения
>end;
Полный исходный код модуля
Полный код модуля программы отправки сообщений по локальной сети представлен в листинге 15.1.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.