Page 1 sur 1

[R] Probleme avec l'écriture du contenu d'une variable

Posté : dim. 25 mai 2008 22:45
par genaille08
j'ai fait un code avec une gui qui présente une gui avec un input
le problème est que le script doit démarré un programme et écrire dedans le contenu de l'input, mais il n'écrit que la première lettre
pourquoi ???

Code : Tout sélectionner

#include <GUIConstants.au3>
AutoItSetOption("SendKeyDownDelay", 100)

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 165, 96, 193, 125)
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 145, 21)
$Button1 = GUICtrlCreateButton("Button1", 24, 40, 113, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Select
        Case $nMsg = $GUI_EVENT_CLOSE
            Exit
            
        Case $nMsg = $Button1
            fonction1()

    EndSelect
WEnd

Func fonction1()
    Send ( "#r" )
    Sleep ( 1000)
    WinWaitActive("Exécuter")
    Sleep ( 1000 )
    Send("notepad.exe{Enter}")
    Sleep ( 1000 )
    winWaitActive("Sans titre -")
    Send ("{"&$Input1&"}")
EndFunc
 

Re: [..] Probleme avec l'écriture du contenu d'une variable

Posté : lun. 26 mai 2008 11:14
par Voodoo
Ceci GUICtrlCreateInput("Input1", 8, 8, 145, 21) retourne un controlID. C'est l'identifiant du champ input. Rien à voir avec ce qu'il y a dedans !

Pour lire un champ il faut utiliser guictrlread()

Ensuite la syntax Send ("{"& $Input1 & "}") trompe Autoit3. Car les chaines de caractéres entre accolades {} sont reservées aux commandes speciales. Comme {Enter}.

Essaye ceci :

Code : Tout sélectionner

#include <GUIConstants.au3>
;~ AutoItSetOption("SendKeyDownDelay", 100)

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 165, 96, 193, 125)
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 145, 21)
$Button1 = GUICtrlCreateButton("Button1", 24, 40, 113, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Select
        Case $nMsg = $GUI_EVENT_CLOSE
            Exit
           
        Case $nMsg = $Button1
            fonction1()

    EndSelect
WEnd

Func fonction1()
    Send ( "#r" )
    Sleep ( 1000)
    WinWaitActive("Exécuter")
    Sleep ( 1000 )
    Send("notepad.exe{Enter}")
    Sleep ( 1000 )
    winWaitActive("Sans titre -")
    Send (GUICtrlRead ($Input1))
EndFunc
 

Re: [..] Probleme avec l'écriture du contenu d'une variable

Posté : lun. 26 mai 2008 11:21
par Ahbadiane
Bonjour,

Pour envoyer les caractères réservés avec Send(), il faut rajouter le Flag à 1 (mode brut - voir l'aide)
La ligne devient donc : Send ("{" & GUICtrlRead($Input1) & "}", 1)

Re: [..] Probleme avec l'écriture du contenu d'une variable

Posté : lun. 26 mai 2008 13:39
par genaille08
ok beh merci pour vos réponse rapide
j'essayerais ce soir