Книга: Delphi. Учимся на примерах

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

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

Прежде всего напишем собственную процедуру 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;

Оглавление книги


Генерация: 0.033. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз