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 }
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). Остальные свойства этого компоненты мы будем изменять в самой программе.
Читать дальше