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. Учимся на примерах - читать книгу онлайн бесплатно, автор Сергей Парижский

Разместите на форме компонент Label категории Standard и измените его свойства согласно табл. 10.2.

Таблица 10.2. Свойства компонента

Свойство Значение Пояснение Caption Logon Надпись метки Font.Color clNavy Цвет текста — темно-синий Font.Size 20 Размер шрифта Font.Style [fsBold] Начертание шрифта — полужирное Left 16 Отступ слева Тор 0 Отступ сверху

Разместите под меткой компонент Edit категории Standard и присвойте его свойству Name значение pass. Для того чтобы скрыть ввод текста (то есть, вводимый пользователем пароль), следует указать в свойстве PasswordChar символ, который будет отображаться вместо вводимого текста. Можно указать здесь символ "*" или, например, знак доллара "$".

Под полем pass разместите кнопку (компонент Button категории Standard) и присвойте ее свойству Caption значение Enter. По нажатию этой кнопки будет выполняться проверка корректности пароля.

Еще нам потребуется два компонента Timer категории System. Для первого таймера необходимо изменить значение свойства Interval на 10, для второго никаких свойств изменять не нужно.

Результат оформления формы должен соответствовать рис. 10.1.

Рис. 10.1. Форма для программы входа в систему

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

Объявим в качестве закрытых членов класса формы переменную типа HWND и две процедуры, которые разработаем чуть позже:

type

 TForm1 = class(TForm)

 …

private

 { Private declarations }

 h1: HWND; //переменная, содержащая идентификатор окна

 procedure logon(); //блокирует все, пока пароль не будет

  //введен верно

 procedure_check(); //проверка корректности пароля

public

 { Public declarations }

end;

Теперь в разделе implementation создадим сами процедуры. Сначала процедура check:

procedure TForm1.check();

begin

 if pass.Text = 'password' then //если пароль верный

 begin

  //узнаем идентификатор Рабочего стола

  h1:= FindWindow('Progman',nil);

  //разрешаем работу с Рабочим столом

  ShowWindow(h1, sw_show);

  // узнаем идентификатор панели задач

  h1:= FindWindow('Shell_traywnd',nil);

  //разрешаем работу с панелью задач

  ShowWindow(h1, sw_show);

  halt; //закрываем программу

 end // иначе, выводим сообщение о неверном пароле

 else ShowMessage('Wrong password!');

end;

Процедура check проверяет корректность пароля. В данном случае в качестве пароля используется слово "password". Если в поле pass введено именно это слово, то разблокируем Рабочий стол и панель задач. После этого доступ ко всему открыт, и мы завершаем работу программы. Если же введенный пользователем текст не совпадает с корректным паролем, то мы продолжаем требовать ввод пароля.

Теперь очередь процедуры logon:

procedure TForm1.logon();

begin

 //узнаем идентификатор Рабочего стола

 h1:= FindWindow('Progman', nil);

 ShowWindow(h1, sw_hide); //прячем Рабочий стол

 //находим панель задач

 h1:= FindWindow('Shell_traywnd', nil);

 ShowWindow(h1, sw_hide); //прячем панель задач

 {проверяем, не запущен ли диспетчер задач}

 h1:= FindWindow(nil, 'Диспетчер задачWindows');

 {если да, то закрываем окно диспетчера задач}

 if (h1 <> 0) then PostMessage(h1, WM_QUIT, 1, 0);

end;

Здесь мы блокируем Рабочий стол и панель задач, а затем проверяем, не пытается ли пользователь отключить нашу программу с помощью диспетчера задач. Если окно диспетчера задач открыто, то закрываем его.

Теперь нам почти не придется программировать — мы просто будем вызывать процедуры check и logon. При нажатии кнопки Enter вызывается процедура check:

procedure TForm1.Button1Click(Sender: TObject);

begin

 check;

end;

Для того чтобы не утруждать пользователя нажатиями кнопки на форме, имитируем эту операцию по нажатию в поле pass клавиши <Enter>. Для этого создайте обработчик события pass.OnKeyРгеss:

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

begin

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

  check; //вызываем процедуру check

end;

#13 —это код клавиши <Enter>.

Коды символов и клавиш клавиатуры перечислены в приложении А.

Для первого таймера событие OnTimer будет содержать только вызов процедуры logon:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

 logon;

end;

Для второго таймера (у которого свойство Interval имеет значение 1000) добавьте в обработчик события OnTimer следующий код:

procedure TForm1.Timer2Timer(Sender: TObject);

begin

 h1:= FindWindow('Progman',nil); //поиск Рабочего стола

 ShowWindow(h1, sw_hide); //прячем Рабочий стол

 CloseWindow(h1); //сворачиваем окно Рабочего стола

 pass.SetFocus; //переводим курсор в текстовое поле

end;

Сворачивание окна Рабочего стола приводит к закрытию системного меню Пуск, если оно открыто. В конечном итоге пользователь не имеет доступа к Рабочему столу, к панели задач, к меню Пуск и диспетчеру задач, однако, несмотря на то, что наша программа не имеет заголовка, ее можно закрыть с помощью комбинации клавиш <Alt+F4>. Для того чтобы отключить эту возможность, создайте обработчик события главной формы OnCloseQuery и добавьте в него следующий код:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

 CanClose:= False;

end;

Единственное, что осталось сделать, — обеспечить программе автозагрузку, указав путь к ней в системном реестре. Для работы с реестром необходимо добавить в раздел uses ссылку на модуль Registry, а за тем создать следующий обработчик события формы OnCreate:

procedure TForm1.FormCreate(Sender; TObject);

var

 Reg: TRegistry;//переменная для работы с реестром

begin

 Reg:= TRegistry.Create;

 Reg.RootKey:= HKEY_CURRENT_USER; //только для текущего пользователя

 Reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRun', true); //открываем раздел автозагрузки в реестре

  //и записываем название и полный путь к нашей программе

 Reg.WriteString('Logon', Application.ExeName);

 Reg.CloseKey; //закрываем реестр

 Reg.Free; //освобождаем память

end;

Теперь наша программа будет загружаться для текущего пользователя вместе с системой и требовать ввод пароля. Программа в действии показана на рис. 10.2.

Рис. 10.2. Программа Вход в систему в действии

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

Полный исходный код модуля программы Вход в систему представлен в листинге 10.1.

Листинг 10.1. Модуль программы Вход в систему

unit Unit1;


interface


uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Registry;


type TForm1 = class(TForm)

 pass: TEdit;

 Label1: TLabel;

 Timer1: TTimer;

 Button1: TButton;

 Timer2: TTimer;

 procedure Button1Click(Sender: TObject);

 procedure passKeyPress(Sender: TObject; var Key: Char);

 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

 procedure FormCreate(Sender: TObject);

 procedure Timer1Timer(Sender: TObject);

 procedure Timer2Timer(Sender: TObject);

private

 { Private declarations }

 h1: HWND; //переменная, содержащая идентификатор окна

 procedure logon(); //блокирует все, пока пароль не будет введен верно

 procedure check(); //проверка корректности пароля

public

 { Public declarations }

end;


var

 Form1: TForm1;


implementation


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

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


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

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

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