Создание ActiveX-элемента PasswordEx

Домой Наверх Предыдущий Следующий

Постановка задачи

В этой части мы с Вами сделаем элемент PasswordBox, который будет служить для ввода пароля.

Внешний вид у него будет как на рис. 1

Этот элемент служит специально для ввода пароля и работать он будет следующим образом. Пользователь вводит в этот элемент пароль. Если введённый пароль неправильный, то наш элемент заблокируется на одну секунду. Во время блокировки в элемент невозможно будет ввести никакого другого нового пароля. Через секунду блокировка будет снята, и пользователь сможет попытаться ввести пароль ещё раз. При вторичном неправильном вводе пароля наш ActiveX-элемент снова заблокируется, но уже на более длинный промежуток времени - на две секунды. После этого пользователь сможет опять повторить попытку. И так далее - пользователь (или шпион ;)) пытается подобрать пароль, и каждый раз при неправильном вводе наш элемент будет блокироваться на всё большее и большее время. Это все будет продолжаться до тех пор, пока пользователь не исчерпает отведённого ему числа попыток. После этого наш элемент заблокируется навсегда.

Разработчик программы, в которой будет использоваться Ваш ActiveX-элемент, сможет на этапе разработки задать параметры, перечисленные в следующей таблице:

Параметр Тип Пояснения
MaxAttempt Integer Параметр, задающий количество попыток на ввод правильного пароля. При исчерпании этого числа генерируется событие NoAttempts (смотри ниже)
Password String Параметр, задающий пароль. При вводе пользователем этого пароля генерируется событие RightPassword (смотри ниже).

Наряду с пользовательскими свойствами наш ActiveX-элемент будет поддерживать и пользовательские события, которые перечислены в следующей таблице:

Событие Пояснение
NoAttempts Возникает, когда пользователь исчерпает максимальное число попыток, заданное в свойстве MaxAttempt (смотри выше).
RightPassword Возникает, когда пользователь введёт пароль правильно (т. е. введённый пользователем пароль совпадет со значением параметра Password).

Возможное применение этого элемента следующее - программист размещает его на форме, которая появляется при запуске приложения. Больше на этой форме ничего не располагается. Далее для в обработчике события NoAttempts пишется, например, следующий код:

Private Sub PasswordBox1_NoAttempts()
  MsgBox "Попыток больше нет! Выход из программы."
  End
End Sub

Этот код будет выполняться, когда пользователь исчерпает число попыток. В этом случае произойдёт просто выход из программы с показом соответствующего сообщения.

В обработчике же события RightPassword можно написать что-то приблизительно такое:

Private Sub PasswordBox1_RightPassword()
  MsgBox "Пароль правильный. Запуск программы."
  frmMain.Visible = True
End Sub

Этот фрагмент будет выполняться в случае, когда пользователь введёт правильный пароль. Появится MsgBox с соответствующим сообщением, и затем выполнение программы продолжится - появится основная форма нашей программы (здесь она названа frmMain).

Подчеркнём, что в событиях NoAttempts и RightPassword для нашего ActiveX-элемента программист (тот, который будет использовать Ваш ActiveX-элемент) может написать всё что угодно. Это уже его дело, как он захочет обрабатывать эти события. Здесь наблюдается полная аналогия с тем, что, скажем, для события Click какой-нибудь кнопки Command1 Вы можете написать любой нужный Вам код (или вообще ничего не писать). Это уже Ваше личное дело, как это событие использовать. Точно также дело программиста, использующего ActiveX-элемент (а не Ваше, как разработчика ActiveX-элемента), что именно написать в обработчиках его событий.

Итак, приступаем к созданию нашего ActiveX-элемента PasswordBox.

Далее

© Ушку ду Кашку

hidden/visible

Hosted by uCoz