Bonjour à tous, je sollicite une nouvelle fois votre aide
J'ai Script1.exe qui fait appel à une fonction MyFunction(arg1, arg2, arg3) qui se trouve dans Script2.exe. Une fois que MyFunction a fini son exécution, le programme continu sur Script1.exe.
Dans MyFunction, j'utilise la fonction Expect qui est définie ici :
https://www.autoitscript.com/forum/topi ... ntry890269
Le but est que si le mot n'est pas trouvé, un message d'erreur s'affiche et lorsqu'on clic sur "OK" on sort des 2 scripts. Je l'ai donc un peu modifiée :
► Afficher le texteExpect
Code : Tout sélectionner
func _Expect($match_text, $_plinkhandle)
local $text
local $sBuffertext
local $count = 0
Local $exit = False
local $found
local $iBegin = TimerInit()
While 1
if TimerDiff($iBegin) > $_plink_timeout then return false
if $count = 10 Then
MsgBox(0, "Erreur", '"' & $match_text & '"' & " n'a pas été trouvé.")
$exit = True
ClipPut($exit)
Exit
EndIf
$text = StdoutRead($_plinkhandle)
$sBuffertext = $sBuffertext & $text
if $_plink_logging Then
filewriteline($_plink_logfile_handle,"**********************NEW SECTION************************")
FileWriteLine($_plink_logfile_handle, "expect : " & $match_text)
FileWriteLine($_plink_logfile_handle, "read : " & $text)
; filewriteline($_plink_logfile_handle,"**********************END SECTION************************")
endif
$count = $count+1
$found = StringRegExp($text,$match_text)
If $found = 1 Then
; If $_plink_display_messages Then MsgBox(4096, $match_text, $text, $_plink_display_message_time)
ExitLoop
Endif
sleep(1000)
Wend
ClipPut($exit)
return $sBuffertext
EndFunc
J'ai commencé par faire un simple "exit" si le mot n'était pas trouvé mais je ne faisais que sortir de Script2.exe et le programme continuait sur Script1.exe, ce qu'on ne veut pas.
Pour cela, j'ai ajouté la variable $exit. Je la met à "FALSE" de base mais lorsqu'un mot n'est pas trouvé, je la variable devient "TRUE". Et dans Script1.exe, j'ai mis ceci :
Code : Tout sélectionner
ShellExecuteWait(Script2.exe', $var1 & ' ' & $var2 & ' ' & $var3, $directory)
$exit = ClipGet()
Local $exit = ClipGet()
If $exit = True Then Exit
Sachant que j'ai déclaré au début du script que $exit = False. Avec un MsgBox, je vois bien que $exit prend True ou False correctement mais dans les 2 cas, il sort des 2 scripts, même si MyFunction va jusqu'au bout correctement

Sauriez-vous m'aider svp ?
