Чтение онлайн

на главную - закладки

Жанры

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

Парижский Сергей Михайлович

Шрифт:

Разработка формы

Создайте новый проект Delphi и измените свойства формы согласно табл. 10.1.

Таблица 10.1. Свойства формы программы входа в систему

Свойство Значение Пояснение
Caption Очистить заголовок
Align alCustom Запрет на перемещение окна
ВorderStyle bsNone Убираем границу и заголовок окна
FormStyle fsStayOnTop Окно программы будет всегда расположено поверх других окон
Position poDesktopCenter
Height 130 Высота
Width 130 Ширина

Разместите на форме компонент 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;

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

Поделиться:
Популярные книги

Рассвет русского царства 3

Грехов Тимофей
3. Новая Русь
Фантастика:
историческое фэнтези
альтернативная история
5.00
рейтинг книги
Рассвет русского царства 3

П 2

Дронт Николай
2. Придворный
Фантастика:
фэнтези
героическая фантастика
5.00
рейтинг книги
П 2

Язычник

Мазин Александр Владимирович
5. Варяг
Приключения:
исторические приключения
8.91
рейтинг книги
Язычник

Гримуар темного лорда VI

Грехов Тимофей
6. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда VI

Шайтан Иван 6

Тен Эдуард
6. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
7.00
рейтинг книги
Шайтан Иван 6

Законы Рода. Том 4

Мельник Андрей
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 4

Портрет дьявола: Собрание мистических рассказов

Скотт Вальтер
Проза:
классическая проза
8.09
рейтинг книги
Портрет дьявола: Собрание мистических рассказов

Пересмешник

Пехов Алексей Юрьевич
Фантастика:
фэнтези
9.38
рейтинг книги
Пересмешник

Князь Целитель 5

Ткачев Андрей Юрьевич
5. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Князь Целитель 5

Барон. Книга вторая

Первухин Андрей Евгеньевич
6. Ученик
Фантастика:
фэнтези
попаданцы
5.40
рейтинг книги
Барон. Книга вторая

Гром Раскатного. Том 1

Володин Григорий Григорьевич
1. Штормовой Предел
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гром Раскатного. Том 1

Потомок бога 3

Решетов Евгений Валерьевич
3. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Потомок бога 3

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Дракон

Бубела Олег Николаевич
5. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.31
рейтинг книги
Дракон