MyBooks.club
Все категории

Сергей Парижский - Delphi. Учимся на примерах

На сайте mybooks.club вы можете бесплатно читать книги онлайн без регистрации, включая Сергей Парижский - Delphi. Учимся на примерах. Жанр: Программирование издательство -,. Доступна полная версия книги с кратким содержанием для предварительного ознакомления, аннотацией (предисловием), рецензиями от других читателей и их экспертным мнением.
Кроме того, на сайте mybooks.club вы найдете множество новинок, которые стоит прочитать.

Название:
Delphi. Учимся на примерах
Издательство:
-
ISBN:
-
Год:
-
Дата добавления:
17 сентябрь 2019
Количество просмотров:
255
Читать онлайн
Сергей Парижский - Delphi. Учимся на примерах

Сергей Парижский - Delphi. Учимся на примерах краткое содержание

Сергей Парижский - Delphi. Учимся на примерах - описание и краткое содержание, автор Сергей Парижский, читайте бесплатно онлайн на сайте электронной библиотеки mybooks.club
Данная книга — продолжение предыдущей книги автора, "Delphi. Только практика". Также как и в "Delphi. Только практика", в данном издании подробно рассмотрены программы для сетей, различные шуточные программы, простые игрушки, некоторые полезные приложения, разработка приложений в стиле Windows XP. В частности, здесь можно найти такие примеры как бесплатная отправка SMS, FTP-клиент, простое шифрование, CGI-сценарии и многое другое. Описаны методы работы с системным реестром Windows и INI-файлами, а также некоторые важные аспекты программирования на системном уровне с применением функций Windows API. Для облегчения понимания программ каждый пример содержит комментарии сложных строк кода.Книга ориентирована как на тех, кто уже имеет опыт создания приложений в Delphi, так и на начинающих программистов. Для начинающих пользователей Delphi в конце книги добавлено приложение с описанием синтаксиса языка программирования Object Pascal.

Delphi. Учимся на примерах читать онлайн бесплатно

Delphi. Учимся на примерах - читать книгу онлайн бесплатно, автор Сергей Парижский

Полученная форма должна соответствовать рис. 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;

Для того чтобы облегчить пользователю жизнь, сделаем так, чтобы отправка сообщения осуществлялась также по нажатии клавиши <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. Модуль программы отправки сообщений по локальной сети

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 //если нажата клавиша <enter>

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

Полученная форма должна соответствовать рис. 16.1.

Рис. 16.1. Форма клиентской программы для удаленного управления указателем

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


Сергей Парижский читать все книги автора по порядку

Сергей Парижский - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mybooks.club.


Delphi. Учимся на примерах отзывы

Отзывы читателей о книге Delphi. Учимся на примерах, автор: Сергей Парижский. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.