IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Credential Provider sur Windows 7 : problème ComboBox remplie dynamiquement


Sujet :

Windows

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Credential Provider sur Windows 7 : problème ComboBox remplie dynamiquement
    Bonjour,

    Je travaille actuellement sur un credential provider qui doit afficher deux combobox (SFI_COMBO_1 et SFI_COMBO_2) en plus des autres éléments lorsqu'on clique sur le credential affiché.
    Pour cela, j'utilise comme base le sample SampleHardwareEventCredentialProvider des derniers samples de credential provider fournis par Microsoft (archive RTMCredentialProviderSamples__FINAL).

    1) Lorsque LogonUI appelle la fonction CSampleCredential::GetComboBoxValueCount pour la première combobox, nous retournons le nombre d'éléments du tableau s_rgComboBoxStrings.

    static const PWSTR s_rgComboBoxStrings[] =
    {
    L"A",
    L"B",
    };

    2) Lorsque LogonUI appelle la fonction CSampleCredential::GetComboBoxValueCount pour la seconde combobox, nous retournons 0 car cette combobox sera mise à vide et remplie à chaque fois que l'on sélectionne A ou B dans la première combobox.

    static const PWSTR s_rgComboBoxStrings_A[] =
    {
    L"A_1",
    };

    static const PWSTR s_rgComboBoxStrings_B[] =
    {
    L"B_1",
    L"B_2",
    L"B_3",
    };

    Ces deux tableaux ayant un nombre d'éléments différents, nous gardons dans une variable du credential nommée combo_2_count le nombre d'éléments ajoutés à la combobox la fois d'avant.
    Ainsi, à chaque fois que l'on sélectionne A ou B, on commence par supprimer tous les éléments précédemment ajoutés :

    if (_pCredProvCredentialEvents) {
    for (i = combo_2_count - 1; i >= 0; i--) {
    hr = _pCredProvCredentialEvents->DeleteFieldComboBoxItem(this, SFI_COMBO_2, i);
    }
    }

    Ensuite, si on sélectionne A dans la 1ère combobox, on ajoute les éléments du tableau s_rgComboBoxStrings_A à la 2nde combobox ; si on choisit B, les éléments du tableau s_rgComboBoxStrings_B sont ajoutés :

    combo_2_count = ARRAYSIZE(s_rgComboBoxStrings_A);

    if (_pCredProvCredentialEvents) {
    for (i = 0; i < combo_2_count; i++) {
    hr = _pCredProvCredentialEvents->AppendFieldComboBoxItem(this, SFI_COMBO_2, s_rgComboBoxStrings_A[i]);
    }
    }

    Une fois, ces éléments ajoutés, nous appelons la fonction SetFieldComboBoxSelectedItem de la manière suivante :

    hr = _pCredProvCredentialEvents->SetFieldComboBoxSelectedItem(this, SFI_COMBO_2, 0);

    afin de sélectionner le 1er élément de la 2nde combobox.

    Mais, visiblement aléatoirement, le 1er élément n'est pas toujours sélectionné. Ceci oblige l'utilisateur à dérouler la liste.
    Pourtant, la fonction SetFieldComboBoxSelectedItem retourne toujours S_OK.

    D'autre part, si on ne veut rien afficher lorsqu'on sélectionne A et B a été sélectionné auparavant :
    - Lorsqu'on choisit A, on appelle DeleteFieldComboBoxItem pour supprimer les 3 éléments de B précédemment ajoutés ;
    - AppendFieldComboBoxItem n'est pas appelée puisque pour A on ne veut afficher aucun élément.
    Dans ce cas, la 2nde combobox contient trois éléments vides qui ne peuvent être sélectionnés alors qu'elle ne devrait pas avoir d'éléments car nous n'avons rien ajouté.

    Sauriez-vous d'où peut venir ce problème ?
    Cette façon de faire pour remplir et vider une combobox dans un credential est-elle correcte ?
    Y a-t-il une autre façon de faire ?

    Vous trouverez le code source complet du credential provider ci-joint si besoin.

    Merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Credential Provider/LogonUI se fige sur Windows 7
    Par valaiden dans le forum Windows
    Réponses: 0
    Dernier message: 26/10/2010, 16h00
  2. Réponses: 3
    Dernier message: 28/06/2006, 17h19
  3. problème d'apparence de l'écran sur windows xp
    Par Arabella dans le forum Windows XP
    Réponses: 1
    Dernier message: 15/02/2006, 09h47
  4. Problème Perl et PostgreSQL sur Windows
    Par BARBIER dans le forum Langage
    Réponses: 7
    Dernier message: 30/01/2006, 09h42
  5. Problème de Connexion à Pg sur Windows 98
    Par bubble_gum dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 24/07/2004, 19h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo