Page 1 sur 1
[R] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 15:35
par quemenep
Bonjour
Je souhaiterais savoir comment faire pour exécuter le contenue d'une variable.
Je m'explique :
J'ai une GUI avec des boutons et une zone de texte pour l'usager (créée par GUICtrlCreateEdit).
Je souhaiterais, en appuyant sur un bouton "Go", exécuter le code de la zone précédente.
je ne sais pas trop comment m'y prendre.
Merci pour les pistes
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 15:55
par jbnh
Une question du même type vient d'être posée
ici
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 16:11
par quemenep
Je précise un peu ce que je veux dire.
Lire le contenu du "Control" ne me pose aucun problème, auquel cas, j'aurais pu m'en sortir avec le topic que vous me référencez.
Moi, ce qui m'importe, est d'
exécuter le contenu de cette variable.
par exemple, si la zone de control contient :
Code : Tout sélectionner
tooltip("Affichage d'un tooltip")
MsgBox(16,"Error","Message Box Error")
MsgBox(16,"Error 2","Message Box Error 2")
Je souhaiterais qu'un tooltip apparaisse et que 2 msgbox apparaissent tout à tour.
Je précise que la zone de texte est vide au début et c'est l'utilisateur qui la rempli puis click sur un bouton pour exécuter ce code !
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 16:31
par SagePourpre
Dans ta boucle
Code : Tout sélectionner
While 1
If WinActive($titre) And _IsPressed("0D", "user32.dll") Then
_read()
EndIf
wend
ainsi, si ta fenêtre est active et que la touche entrée est pressée, tu pourras exécuter le contenu de ta variable.
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 16:52
par quemenep
Heu .... désolé mais je ne suis pas là !
_read() est elle une fonction UDF ? Si oui, je ne l'ai trouvée nulle part ce qui fait que je ne peut pas compiler.
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 16:55
par SagePourpre
oops. non désolé ... En fait j'avais oublié de préciser
qu'à la place de _read() tu n'as qu'à mettre ton guictrlread
pour aller chercher la valeur du guictrledit
Personnellement, j'ai fait une petite application (dans ma signature : la super barre de recherche) qui utilise ce principe.
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 17:24
par quemenep
Ok pour récupérer cette valeur, comme dit précédemment.
Ce que je souhaite, c'est EXECUTER le contenu de cette variable !
Un truc du genre :
ExecuteAUTOIT($mavaraible)
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 17:57
par SagePourpre
oh... si j'ai bien compris, Tu veux exécuter du code autoit brute via un guictrledit...
Alors là, si c'est bien ça, je ne vois aucun moyen direct d'y parvenir sans peine.
Je ne sais pas du tout quel est ton but mais si tu veux pouvoir utiliser absolument
toutes les fonctions d'autoit via ce champ texte dans ta gui, je ne sais pas comment y
arriver. Par contre, si tu utilises un nombre limité de fonction au travers de cette interface,
c'est jouable.
Si ce n'est pas indiscret, c'est pour faire quoi exactement ?
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 18:06
par quemenep
Effectivement, tu as bien compris ce que je souhaite faire.
Je souhaite laisser libre court à l'utilisateur de taper toutes les fonctions qu'il souhaite.
En fait, c'est une GUI qui nous servirait pour gérer les différents comportements d'une fenêtre IE, au fil du temps, suivant l'état des pages affiché ! (c'est pour tester une appli client-serveur)
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 18:25
par jbnh
► Afficher le texteCode
Code : Tout sélectionner
#include <GUIConstants.au3>
$GUI = GUICreate("....", 270, 70, -1, -1)
$Input_1 = GUICtrlCreateInput("", 10, 10, 220, 20)
$Button_2 = GUICtrlCreateButton("launch", 10, 35, 80)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg = $GUI_EVENT_CLOSE
Exit
Case $nMsg = $Button_2
$var = guictrlread($Input_1)
$text = StringReplace($var, '"', "'")
Run(@AutoItExe & ' /AutoIt3ExecuteLine "'&$text&'"')
EndSelect
WEnd
Mh bizarrement ca marche pas avec les tooltip, mais c'est un bon début
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 20:03
par SagePourpre
quemenep a écrit :Effectivement, tu as bien compris ce que je souhaite faire.
Je souhaite laisser libre court à l'utilisateur de taper toutes les fonctions qu'il souhaite.
En fait, c'est une GUI qui nous servirait pour gérer les différents comportements d'une fenêtre IE, au fil du temps, suivant l'état des pages affiché ! (c'est pour tester une appli client-serveur)
Le seul moyen d'y parvenir que je connais (j'ai déjà utilisé une méthode semblable) serait d'utiliser quelque chose du genre...
► Afficher le texteCode
Code : Tout sélectionner
#include<array.au3>
#include<guiconstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 403, 295, 193, 125)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Edit1 = GUICtrlCreateEdit("", 64, 56, 153, 73)
$Button1 = GUICtrlCreateButton("Ok", 224, 48, 65, 65, 0)
GUICtrlSetOnEvent(-1, "ok")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
WEnd
Func ok()
$read = GUICtrlRead($Edit1)
If StringTrimRight($read,1) <> ")" Then
$read = ""
MsgBox(0,"Attention","Parenthèse non-fermée à la fin de cette fonction")
EndIf
$fonction = StringSplit($read, "(", 1)
$fonction = $fonction[1]
$edit = StringTrimLeft($read, StringLen($fonction) + 1)
$edit = StringSplit($edit, "|", 1)
Select
Case $fonction = "run"
Select
Case $edit[0] = 1
$p1 = $edit[1]
Run($p1)
Case $edit[0] = 2
$p1 = $edit[1]
$p2 = $edit[2]
Run($p1, $p2)
Case $edit[0] = 3
$p1 = $edit[1]
$p2 = $edit[2]
$p3 = $edit[3]
Run($p1, $p2, $p3)
Case $edit[0] = 4
$p1 = $edit[1]
$p2 = $edit[2]
$p3 = $edit[3]
$p4 = $edit[4]
Run($p1, $p2, $p3, $p4)
Case $edit[0] > 4
MsgBox(0, "Erreur", "Trop de paramètres pour cette fonction")
EndSelect
EndSelect
EndFunc ;==>ok
Func Form1Close()
Exit
EndFunc ;==>Form1Close
Autrement dit, ton guictrledit est lu et est interprété comme suit.
Avant la première parenthèse est le nom de fonction, après la première parenthèse
sont les paramètres que l'on sépare à l'aide du caractère "|" au lieu de la virgule.
L'idée donc est de retranscrire toute tes fonctions de manière à ce qu'elles puissent
être interprété par guictrledit.
C'est la seule manière que je connais pour faire ce que tu souhaites.
Je l'ai testé avec une ligne simple, pour tester plusieurs lignes de codes, il faudra travailler davantage le concept.
Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : ven. 26 sept. 2008 20:04
par SagePourpre
Ceci dit, la manière de Jbnh qui n'était pas encore là quand j'ai commencé à écrire semble
beaucoup plus facile ...
même trop

Re: [..] Exécuter le contenue d'un tableau ou d'une varaible
Posté : lun. 29 sept. 2008 15:29
par quemenep
Cool, ça me va bien.
Le ligne clef est pour moi : Run(@AutoItExe & ' /AutoIt3ExecuteLine "'&$text&'"')
C'est juste ce que je cherchais !
Merci !