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



>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;

Для того чтобы облегчить пользователю жизнь, сделаем так, чтобы отправка сообщения осуществлялась также по нажатии клавиши в любом текстовом поле ввода. Для этого необходимо создать обработчик события OnKeyPress для каждого из полей. Код этого обработчика для поля ip, который затем можно назначить полям txt и how:

>procedure TForm1.ipKeyPress(Sender: TObject; var Key: Char);

>begin

> if key = #13 then //если нажата клавиша

> bomb; //отправка сообщения

>end;

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

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

Листинг 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 }