Bon en fait, avec ce que je fais, ça ne fonctionne pas totalement... J'ai 4 variables : une avec un compteur ($i de la boucle for), une qui est dans un tableau, un handle et un chemin (que je demande à l'utilisateur)...
► Afficher le texteScript1
Code : Tout sélectionner
Local $j = 1
$directory = FileSelectFolder("Choisissez votre répertoire", "")
If @error Then
; Display the error message.
MsgBox(0, "Erreur", "Pas de répertoire sélectionné")
EndIf
$nombre = InputBox("Nombre", "Entrer le nombre de fleurs à répertorier :")
Local $tableau[$nombre][4]
$GUIList = GUICreate("My GUI", 320, 20*($nombre+8))
$image = GUICtrlCreatePic($directory1 & "\Image.jpg", 124, 0, 196, 33)
GUICtrlCreateLabel("Fleurs", 10, 40, 300, 40)
GUICtrlCreateLabel("Nom", 10, 80, 100, 20)
GUICtrlCreateLabel("Couleur", 120, 80, 100, 20)
For $i = 0 to $nombre - 1
$tableau[$i][0] = GUICtrlCreateLabel("Fleur " & $i+1, 10, 20*($j+4), 100, 21)
$tableau[$i][1] = GUICtrlCreateInput("Nom " & $i+1, 110, 20*($j+4), 100, 21)
$tableau[$i][2] = GUICtrlCreateInput("Couleur " & $i+1, 210, 20*($j+4), 100, 21)
$j = $j + 1
Next
$Button = GUICtrlCreateButton($Button_text,110, 20*($nombre+6), 100, 20)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
If $msg = $Button Then
For $i = 0 to $nombre - 1
$tableau[$i][0] = "Fleur " & $i + 1
$tableau[$i][1] = GUICtrlRead($tableau[$i][1])
$tableau[$i][2] = GUICtrlRead($tableau[$i][2])
$tableau[$i][3] = "E" & $i+7
Next
ExitLoop
EndIf
WEnd
GuiDelete($GUIList)
($tableau, "Mon tableau ", "10|4", 2 + 64, 64, "Fleur | Nom | Couleur | Emplacement", Default, 0xDDFFDD)
For $i = 1 to $nombre
Local $handle = FileOpen("Repertorisation.txt", 1)
_FileWriteLog($handle, "Commencement")
ShellExecuteWait('Script2.exe', $i & ' ' & $tableau[$i][3] & ' ' & $handle & ' ' & $directory)
Next
► Afficher le texteScript2
Code : Tout sélectionner
Local $compt, $Arg[4] = ['', '', '', '']
If $CmdLine[0] = 0 Then
MsgBox(0, @ScriptName, 'Aucun paramètre passé à Script1.exe')
Else
; On récupères les 4 premiers paramètres (voir le 1er s'il n'y en a qu'un)
For $compt = 3 to $CmdLine[0]
If $compt > 4 Then ExitLoop
$Arg[$compt -1] = $CmdLine[$compt]
Next
; on appelle la fonction
MyFunction($Arg[0], $Arg[1], $Arg[2], $Arg[3])
EndIf
Exit
Func MyFunction($Arg1 = '', $Arg2 = '', $Arg3 = '', $Arg4 = '')
MsgBox(0, @ScriptName, 'Je lance MyFunction avec $Arg1 = ' & $Arg1 & ', $Arg2 = ' & $Arg2 & ', $Arg3 = ' & $Arg3 & ' et $Arg4 = ' & $Arg4)
EndFunc
Je n'ai pas mis tout le code mais c'est l'idée.
Sauf que lorsque je lance ça, le message suivant s'affiche :
Je lance MyFunction avec $Arg1 = , $Arg2 = , $Arg3 = E et $Arg4 = c:\Documents
Et je suis censé avoir :
Je lance MyFunction avec $Arg1 = 1, $Arg2 = E1, $Arg3 = ??? et $Arg4 = c:\Documents and Settings
(Je ne sais pas trop ce que doit afficher $Arg3 mais de toute façon il n'affiche pas le bon truc)
EDIT : je viens de voir que ça commence à poser problème lorsque je souhaite passer au minimum 3 arguments... 2 pas de soucis (mis à part mon chemin qui est considérer comme plusieurs arguments) mais avec 3 il ne garde pas en mémoire le 1er argument... Et affiche correctement mes arguments 2 et 3...
Et tant qu'on est dans les soucis : dans Script2 j'ai des fonctions qui sont du type :
Je suppose que je vais également avoir quelques soucis pour récupérer les paramètres dans Script1...
EDIT2 : 1er soucis résolu : dans Script2, j'ai mis "For $I=2 to $CmdLine[0]" de lieu de laisser "$I=1" donc maintenant c'est bon, il me prend bien mes 4 paramètres !

Plus qu'à voir pour soucis 2 ($Arg4 = variable chemin avec espace) et soucis 3 (récupérer les variables contenues dans les fonctions get de Script2 parce que je suppose que je ne peux pas les récupérer de la même manière...)