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

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

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

Полный исходный код модуля программы Вход в систему представлен в листинге 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
{$R *.dfm}
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;
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;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 logon;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 check;
end;
procedure TForm1.passKeyPress(Sender: TObject; var Key:Char);
begin
 if key = #13 then // если нажата клавиша <Enter>
  check; //вызываем процедуру check
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 CanClose:= False;
end;
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;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
 h1:= FindWindow('Progman', nil); //поиск Рабочего стола
 ShowWindow(h1, sw_hide); //прячем Рабочий стол
 CloseWindow(h1); //сворачиваем окно Рабочего стола
 pass.SetFocus; //переводим курсор в текстовое поле
end;
end.

? Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter 10.

Оглавление книги


Генерация: 0.043. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз