В этой процедуре выполняется проверка: все ли необходимые поля заполнены. Если нет текста сообщения, то устанавливаем знак "!"; если не указан 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. Модуль программы отправки сообщений по локальной сети