Поставщик учетных данных. Отображение вида индикатора выполнения и отключение поля пароля или PIN-кода

Я занимаюсь разработкой пользовательского поставщика учетных данных для смарт-карт на основе примеров Microsoft http://www.microsoft.com/en-us/download/details.aspx?id=5372. В частности, я использую пример с упакованным провайдером, поэтому мне нужно только добавить некоторые новые функции к существующим.
После нажатия кнопки «Отправить» провайдер должен отправить запрос на аутентификацию на мой сервер, и в случае положительного ответа он должен продолжить работу со стандартным механизмом Windows.

Я успешно сделал это, поместив свой запрашивающий код в начало метода GetSerialization. Но так как эта операция может занять много времени, мне нужно информировать пользователя о текущем прогрессе.

  1. Первый вопрос. Это хорошая идея, чтобы запустить мой код из GetSerialization?

Поскольку разработчику не разрешено рисовать пользовательские элементы управления на экране входа в систему (например, индикатор выполнения), я решил создать небольшое верхнее окно, содержащее текущее состояние операции, и отобразить его в правом верхнем углу. При этом мне нужно отключить поле ПИН-код и отправить кнопку до завершения операции. Но как я заметил здесь Отключение областей на провайдере учетных данных, это невозможно из GetSerialization.

  1. Второй вопрос Каким образом вы бы порекомендовали мне эту функциональность?

  2. И третий. Как я могу использовать метод Credentials :: Advice, чтобы определить, что именно произошло? Потому что я получаю только ICredentialProviderCredentialEvents * pcpce в качестве параметра, который я могу использовать для вызова его методов, но я до сих пор не знаю, каков источник этого события. Клавиша нажата или кнопка отправки или что-то еще?

Любая помощь будет оценена)

3

Решение

  1. Я просто получил ту же неоднозначность и делаю все взаимодействие с сервером внутри GetSerialisation — это нормально работает. Задержка от нажатия кнопки отправки до входа примерно 2 секунды.
  2. Попробуйте использовать текстовое поле с бегущей точкой:
    '. '
    ' . '
    ' . '
    ' . '
    ' . '
    ' .'
  3. Консультирование используется, чтобы предоставить вам контекст для ваших звонков LogonUI, Например установить текстовые поля с обновленными значениями.
1

Другие решения