[R] Impossible de lire les InPut dans un script

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
thimmy
Niveau 1
Niveau 1
Messages : 7
Enregistré le : jeu. 18 juil. 2013 10:41
Status : Hors ligne

[R] Impossible de lire les InPut dans un script

#1

Message par thimmy »

Bonjour à tous. J'ai besoin d'aide pour mon script. J'ai 2 InPut dans l'interface graphique de mon script. Mais lors des tests du script, je constate que les "InPut" ne sont pas lus.
Le script ne va pas chercher ma saisie dans les InPut malgré la commande "GUICtrlRead" que j'ai mise devant chaque ligne.
Vous trouverez mon script ci-dessous pour exemple.

Code : Tout sélectionner

[spoiler=]#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <AD.au3>
#include <Array.au3>

_AD_Open()

#Region ### START Koda GUI section ### Form=Création de groupe dans Active Directory.kxf
GUICreate("Création de groupes Admin Locaux", 371, 476, 192, 124)
GUICtrlCreateGroup("", 32, 40, 305, 369)
GUICtrlCreateGroup("", -99, -99, 1, 1)

GUICtrlCreateLabel("Création de groupe Admin locaux", 40, 40, 160, 17)
GUICtrlCreateLabel("Groupe", 64, 86, 39, 17)
GUICtrlCreateLabel("Utilisateur", 64, 158, 50, 17)

; Déclaration des zones de saisies
Global $admingroup = GUICtrlCreateInput("", 64, 104, 241, 25) ; saisie du nom du groupe à créer
Global $utilisateur = GUICtrlCreateInput("", 64, 176, 241, 25) ; saisie du nom de l'utilisateur à ajouter à un groupe

;Déclaration des boutons radios
Global $radio0 = GUICtrlCreateRadio("Vérifier l'existance du groupe", 64, 256, 249, 17)
Global $radio1 = GUICtrlCreateRadio("Ajouter un compte à un groupe déjà exitant", 64, 280, 241, 17)
Global $radio2 = GUICtrlCreateRadio("Créer un groupe et y ajouter un compte utilisateur", 64, 304, 257, 17)

;déclaration des boutons à cliquer
Global $valider = GUICtrlCreateButton("Valider", 64, 368, 75, 25)
Global $annulation = GUICtrlCreateButton("Effacer", 232, 368, 75, 25)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $cgroupin = 'OU=Admin_Locaux,OU=Groupes,OU=ATC,DC=ENC92,DC=LOCAL' ;OU où se crée les groupes Admin Locaux
Global $dng = ("G_ADMINL_") ; Racine du Nom du Groupe
Global $sFQDN = _AD_SamAccountNameToFQDN() ;Compte utilisateur
Global $cgroupe = $dng & StringUpper(GUICtrlRead($admingroup)) ;Force la mise en majuscule du nom du groupe
Global $cutilisateur = GUICtrlRead($utilisateur)
Global $membres_du_groupe = _AD_GetGroupMembers($cgroupe)

While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
            ExitLoop
        Case $annulation
            ;Efface la saisie de l'utilisateur
            GUICtrlSetData($admingroup, "")
            GUICtrlSetData($utilisateur, "")

            ;Annule la sélection des boutons radio
            GUICtrlSetState($radio0, $GUI_UNCHECKED)
            GUICtrlSetState($radio1, $GUI_UNCHECKED)
            GUICtrlSetState($radio2, $GUI_UNCHECKED)

    Case $valider
        If  BitAND (GUICtrlRead($radio0), $GUI_CHECKED) = $GUI_CHECKED Then
            _radio0()
            EndIf
        If BitAND (GUICtrlRead($radio1), $GUI_CHECKED) = $GUI_CHECKED Then
            MsgBox(1, "Ajout de compte utilisateur :", "Vous allez ajouter le compte "&$cutilisateur&" au groupe "&$cgroupe)
            _radio1()
            EndIf
        If BitAND (GUICtrlRead($radio2), $GUI_CHECKED) = $GUI_CHECKED Then
             MsgBox (1, "Création de Groupe Admin Locaux :", "Vous allez créer le groupe "&$cgroupe&" et y ajouter le compte "&$cutilisateur)
            _radio2()
            EndIf
    EndSwitch
WEnd


;Vérification de l'existence d'un groupe "Admin Locaux"
Func _radio0()

If _AD_ObjectExists($cgroupe) = 1 Then
    MsgBox(0, "Info :", "Le groupe "&$cgroupe&" existe déjà.")
    _ArrayDisplay($membres_du_groupe)
Else
    MsgBox(0, "Info :", "Le groupe "&$cgroupe&" n'existe pas.")
    EndIf
EndFunc


;Ajout de compte à un groupe "Admin Locaux"
Func _radio1()


If _AD_AddUserToGroup($cgroupe, $cutilisateur) = 1 Then
    MsgBox(0, "Info :",  "Le compte "&$cutilisateur&" a été ajouté au groupe "&$cgroupe&" avec succès")
Else
    If @error = 1 Then
    MsgBox(0, "Info :", "Le groupe "&$cgroupe&" n'existe pas.")
    Else
        If @error = 2 Then
            MsgBox(0, "Erreur :", "Le compte "&$cutilisateur&" n'existe pas dans l'AD.")
        Else
            If @error = 3 Then
                MsgBox (0, "Info :", "Le compte "&$cutilisateur&" est déjà membre du groupe "&$cgroupe)
            Else
                If @error = 4 Then
                    MsgBox(0, "Erreur", "Impossible d'ajouter le compte "&$cutilisateur&" "& @error, "Veullez contacter l'administrateur système")
                EndIf
            EndIf
        EndIf
    EndIf
EndIf
EndFunc

;Création du groupe "Admin Locaux" et ajout de compte utilisateur
Func _radio2()

If  _AD_CreateGroup($cgroupin, $cgroupe) = 1 Then ;Création d'un nouveau groupe
    If @error = 1 Then
        MsgBox(0, "Erreur :", "Le groupe "&$cgroupe&" existe déjà.")
    Else
        If @error = 3 Then
            MsgBox(0, "Erreur", "Impossible de créer le groupe "&$cgroupe&" "& @error, "Veullez contacter l'administrateur système")
        Else
            If @error = 0 Then

            _AD_AddUserToGroup($cgroupe, $cutilisateur) ;Ajout de l'utilisateur au groupe créé
            If @error = 0 Then
                MsgBox(0, "Info :", "Le compte "&$cutilisateur&" a été ajouté au groupe "&$cgroupe&" avec succès")
            Else
                If @error = 1 Then
                    MsgBox(0, "Info :", "Le groupe "&$cgroupe&" n'existe pas.")
                Else
                    If @error = 2 Then
                        MsgBox(0, "Erreur :", "Le compte "&$cutilisateur&" n'existe pas dans l'AD.")
                    Else
                        If @error = 3 Then
                            MsgBox (0, "Info :", "Le compte "&$cutilisateur&" est déjà membre du groupe "&$cgroupe)
                        Else
                            If @error = 4 Then
                                MsgBox(0, "Erreur", "Impossible d'ajouter le compte "&$cutilisateur&" "& @error, "Veullez contacter l'administrateur système")
                            EndIf
                        EndIf
                    EndIf
                EndIf
            EndIf
        EndIf
    EndIf
EndIf
EndIf
EndFunc
_AD_Close()

Exit[/spoiler]
S'il vous plait, aidez-moi à comprendre mon erreur. J'ai retourné le script dans plusieurs sens et je n'ai toujours pas trouvé.
D'avance merci pour votre aide.
Modifié en dernier par thimmy le lun. 23 sept. 2013 13:20, modifié 1 fois.
Avatar du membre
FireFox
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 217
Enregistré le : dim. 14 oct. 2012 01:30
Localisation : Picardie/Île-de-France, France
Status : Hors ligne

Re: [..] Impossible de lire les InPut dans un script

#2

Message par FireFox »

Bonjour,
La fonction GUICtrlRead lit la valeur actuelle du contrôle et la variable associé ne change pas jusqu'à temps que tu réassignes autre chose.

Par exemple tu lis l'utilisateur (qui est au départ vide) et mets la valeur dans $cutilisateur puis tu appelles cette variable dans ton While sans refaire un GUICtrlRead donc ta variable vaut toujours "".

En clair les GUICtrlRead en dehors de ton while sont inutiles.

Cdlt, FireFox.
thimmy
Niveau 1
Niveau 1
Messages : 7
Enregistré le : jeu. 18 juil. 2013 10:41
Status : Hors ligne

Re: [..] Impossible de lire les InPut dans un script

#3

Message par thimmy »

Merci FireFox !
Je viens de résoudre mon problème grâce à ta remarque. En effet je n'y avais pas du tout pensé pourtant c'était évident.
Encore merci pour ton aide.
Répondre