Delphi. Учимся на примерах | страница 36



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

>begin

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

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

>end;

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

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

Для первого таймера событие 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;

Сворачивание окна Рабочего стола приводит к закрытию системного меню Пуск, если оно открыто. В конечном итоге пользователь не имеет доступа к Рабочему столу, к панели задач, к меню Пуск и диспетчеру задач, однако, несмотря на то, что наша программа не имеет заголовка, ее можно закрыть с помощью комбинации клавиш . Для того чтобы отключить эту возможность, создайте обработчик события главной формы 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('Software\Microsoft\Windows\CurrentVersion\Run', true); //открываем раздел автозагрузки в реестре

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

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

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

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

>end;

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

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

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

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

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