Отображение окна ввода пароля при восстановлении приложения |
![]() |
![]() |
Статьи |
Предположим, что у Вас имеется "секретное приложение" и Вы не хотите, чтобы посторонние могли работать с этим приложением. Такое приложение могло бы автоматически сворачиваться в панель задач, если никаких действий со стороны пользователя в течении определенного времени не было. Когда нажата кнопка приложения (на Панели Задач), приложение восстанавливается в первоначальное состояние. А Вам нужно отобразить окно ввода пароля, чтобы удостовериться, что уполномоченный пользователь обращается к приложению. Application.OnRestore - не подходитС первого взгляда, объект TApplication генерирует событие OnRestore, которое происходит, когда предварительно свернутое приложение восстановлено до нормального размера. Обратите внимание: когда восстановлено, а не перед тем, как восстановиться. Даже при том, что Вы могли бы снова свернуть приложение, используя Application.Minimize внутри события Application.OnRestore, все-равно будет некоторое мелькание формы, а нам этого не надо! HookMainWindow - реагирует прежде, чем будет сгенерировано OnRestoreTApplication имеет метод HookMainWindow, который позволяет Вам вставлять Ваш собственный обработчик сообщения, который будет выполнять и прерывать сообщения, посланные Вашему приложению прежде, чем они будут обработаны объектом Application. HookMainWindow объявляется под TApplication так:
Где указатель метода TWindowHook объявлен как:
Обработка SC_RESTORE WM_SYSCOMMAND с использованием HookMainWindowСначала в OnCreate MainForm установим ловушку :) Сразу убедитесь, что Вы сняли ловушку, когда форма будет разрушена. Наиболее важно, дескриптор системной команды SC_RESTORE отображает модальное диалоговое окно ввода пароля, которое возвращает True, если Пользователь может продолжать работать с восстановленным приложением.
Это ВСЕ!!! |