Page 1 sur 1

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

Posté : sam. 16 août 2014 09:45
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

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

Posté : sam. 16 août 2014 10:59
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

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

Posté : sam. 16 août 2014 12:42
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

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

Posté : dim. 17 août 2014 20:27
par Ks10
Merci pour votre aide.
La solution de Mikell est fonctionnel et enlève mon bug.

Sujet résolu.