J'ai bien tout lu mais j'ai quand même un souci avec le bout de code suivant (le but est de récupérer le string entré dans $inputbox1, l'encoder en HTML grâce au include ci-joint et l’écrire ensuite dans un fichier texte):
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <String.au3>
#include <HTML.au3>
GUICreate("URL builder",320,240,269,175)
$check1 = GUICtrlCreateCheckbox("Custom Description",5,5,150,20)
$inputbox1 = GUICtrlCreateInput("",5,30,100,20)
$input1 = GUICtrlRead($inputbox1)
$html1 = _HTMLEncode($input1)
$buildbutton = GUICtrlCreateButton("Build!",250,5,60,40)
GUISetState(@SW_SHOW)
GUICtrlSetState($buildbutton,$GUI_ENABLE)
GUICtrlSetState($input1,$GUI_DISABLE)
Func check1()
GUICtrlSetState($inputbox1, $GUI_ENABLE)
EndFunc
While 1
$msg = GUIGetMsg()
If $msg = -3 Then Exit
If $msg = $check1 Then check1()
If $msg = $buildbutton Then
FileWrite(@TempDir & "\guitest.txt", $html1)
Exit
EndIf
WEnd
Exit
Je précise qu'une MsgBox ne daigne même pas l'afficher donc je pense que $input1 n'est pas considérée comme un string mais alors que faire ?
Autre question sur le même cas, il semble que la fonction _HTMLEncode ne lise pas la valeur de $input1 mais se content d'encoder le string "$input1"...
La fonction GUICtrlRead va lire le contenu du champs de texte uniquement au moment où tu l'appelles, donc si tu places cette fonction juste derrière la création du champs, la valeur sera forcément nulle.
Il faut que tu lises le contenu tu champs au moment du clic sur le bouton $buildbutton
Voici quelques modifications avec des commentaires, pour que tu comprennes les erreurs :
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <String.au3>
#include <HTML.au3>
GUICreate("URL builder",320,240,269,175)
$check1 = GUICtrlCreateCheckbox("Custom Description",5,5,150,20)
$inputbox1 = GUICtrlCreateInput("",5,30,100,20)
$buildbutton = GUICtrlCreateButton("Build!",250,5,60,40)
GUISetState(@SW_SHOW)
GUICtrlSetState($buildbutton,$GUI_ENABLE)
GUICtrlSetState($inputbox1,$GUI_DISABLE) ; ici, c'est $inputbox1, pas $input1
Func check1()
; On test si $check1 est coché ou non et on active ou désactive le champs $inputbox1 en fonction
If GUICtrlRead($check1) = $GUI_CHECKED Then
GUICtrlSetState($inputbox1, $GUI_ENABLE)
Else
GUICtrlSetState($inputbox1, $GUI_DISABLE)
EndIf
EndFunc
While 1
$msg = GUIGetMsg()
If $msg = -3 Then Exit
If $msg = $check1 Then check1()
If $msg = $buildbutton Then
; on moment où l'utilisateur clique sur le bouton, on va lire la valeur du champs $inputbox1
$input1 = GUICtrlRead($inputbox1)
$html1 = _HTMLEncode($input1)
MsgBox(0, "_HTMLEncode", $input1)
FileWrite(@TempDir & "\guitest.txt", $html1)
Exit
EndIf
WEnd
Exit
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Ça solutionne déjà la moitié du problème, car maintenant le string est bien recopié mais pas encodé.
Mais je n'ai probablement pas bien compris comment fonctionne l'UDF ?
J'ai testé ce qui suit au sein du HTML.au3 et ai bien eu un résultat correct:
Ce n’était pas bon car mon UDF de départ était foireux et convertissait vers un mauvais jeu de caractères...
C'est ce qui m'a permis de savoir ou était la faille et donc en changeant l'UDF c'est tout bon.
Par contre maintenant j'ai un autre bémol mais je vais chercher un peu avant de reposter car c'est la GUI (ou moi) qui merdouille et je l'apprivoise tout juste.