[R] Commande qui s'exécute 2 fois

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

[R] Commande qui s'exécute 2 fois

#1

Message par Ks10 »

Bonjour,

Je suis entrain de développer une petite console afin d'administré un de mes programmes. Je rencontre un soucis de commande qui s'exécute deux fois mais je ne sait pas pourquoi.

Alors voici la structure principale du programme :

Code : Tout sélectionner

Global $Form1 = GUICreate("Mon prog", 800, 584, -1,  -1)
Global $List1 = GUICtrlCreateListView("Test|Test", 0, 0, 800, 331)
$console = GUICtrlCreateEdit("", 0, 336, 801, 225)
$r_console = GUICtrlRead($console)

Global $Input1 = GUICtrlCreateInput("", 0, 560, 801, 21)


Global $Renter[1][2] = [["{ENTER}", $Input1]]
GUISetAccelerators($Renter)



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

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg

    Case $Input1
        $code = GUICtrlRead($Input1)
            If StringLeft($code, 6) = "visit " Then
                        $vrf = IniRead(@ScriptDir & "\config.ini", "cfg", "co", "Erreur")
                        If $vrf = "0" Then
                                    $r_console = GUICtrlRead($console)
                                    GUICtrlSetData($console, $r_console & "#> Cette commande n'est pas disponible car vous n'êtes pas connecté au système. Connectez-vous !" & @CRLF)
                                    GUICtrlSetData($Input1, "")
                                Else

                                $recmd = StringTrimLeft(GUICtrlRead($Input1), 6)
                                $format_cmd = StringSplit($recmd, ".")



                                                    If Not _EzMySql_Query("SELECT * FROM `gplan`.`attente` WHERE ID = '" & $format_cmd[1] & "'") Then
                                                                    $r_console = GUICtrlRead($console)
                                                                    GUICtrlSetData($console, $r_console & "Impossible de contacté la base. Code erreur " & _EzMySql_ErrMsg())
                                                                Else
                                                                    For $i = 1 To _EzMySql_Rows() Step 1
                                                                    $a1Row = _EzMySql_FetchData()

                                                                    If $format_cmd[2] = $a1Row[3] Then

                                                                            ShellExecute($a1Row[6])
                                                                            ExitLoop

                                                                    EndIf

                                                                    Next
                                                                EndIf



                                                            EndIf
                                                        EndIf



  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd

Le but c'est que lorsque je tape "visit blabla.blabla" , celui-ci execute l'url qui est lié.
Cependant le shellexecute s'effectue en deux fois donc il ouvre deux onglets...
J'ai pourtant mit un "exitloop" mais rien ..

Une idée ?

Merci d'avance
Modifié en dernier par Ks10 le dim. 17 août 2014 20:27, modifié 1 fois.
Faco
Niveau 4
Niveau 4
Messages : 80
Enregistré le : lun. 29 juil. 2013 18:09
Status : Hors ligne

Re: [..] Commande qui s'exécute 2 fois

#2

Message par Faco »

Je pence que c'est ton " $code = GUICtrlRead($Input1)" qui relance un event sur ton $input1, j'ai juste bidouillé ça et là ça passe qu'une fois dans la boucle.
► Afficher le texte
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Commande qui s'exécute 2 fois

#3

Message par mikell »

L'event en question est la perte de focus de l'input
Faco a donné la bonne solution, quoique dans ce genre de cas on utilise plutôt un GUICtrlCreateDummy
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Commande qui s'exécute 2 fois

#4

Message par Ks10 »

Merci pour votre aide.
La solution de Mikell est fonctionnel et enlève mon bug.

Sujet résolu.
Répondre