Page 1 sur 1
[R] Questions sur la compilation
Posté : mar. 16 juin 2015 14:09
par caropost
Bonjour,
Est-il possible d'inclure un script compilé dans un script compilé ?
L'idée est que j'ai Script1.au3 dans lequel je fais appel à une fonction (
MyFunction()) qui se trouve dans Script2.au3. Script2 se trouve dans un dossier MyFolder et Script1 sur le bureau. Jusque là, tout va bien, ça fonctionne.
Sauf que là où ça se complique c'est que je souhaiterais compiler mes 2 scripts.
J'ai testé 2 choses : mettre en include le fichier Script2.exe et avec FileInstall. Dans 2 cas, ça ne fonctionne pas...
Avec FileInstall, le début de mon script se déroule bien jusqu'à ce que je fasse appel à
MyFunction(), là, il ne la trouve pas...
De plus, ce que j'aurais aimé c'est de pouvoir mettre le chemin vers Script2.exe en variable et je sais qu'avec FileInstall le chemin de destination peut être une variable...
Donc voilà, je voulais savoir si mon idée était faisable ou non.
Merci par avance

Re: [..] Questions sur la compilation
Posté : mar. 16 juin 2015 14:24
par jguinch
#Include sert à inclure du code depuis une source AutoIt externe (source = code non compilé) (donc il faut forcément disposer du code source)
C'est comme si, à la place de la ligne #Include, tu copiais le contenu de la source externe.
Tu n'as donc à priori besoin de compiler que le script Script1.au3.
Re: [..] Questions sur la compilation
Posté : mar. 16 juin 2015 16:58
par caropost
Oui, c'est bien ce qu'il me semblait mais je voulais une confirmation

Et je suppose que ce n'est pas que AutoIt qui veut ça mais également les autres systèmes de programmation...
Merci en tout cas

Re: [..] Questions sur la compilation
Posté : mar. 16 juin 2015 17:36
par jchd
Mets plutôt les fonctions communes dans un include privé que tu inclus dans chaque programme qui l'utilise.
Re: [..] Questions sur la compilation
Posté : mar. 30 juin 2015 16:44
par caropost
Bonjour,
J'ai vu des choses $cmdLine mais je ne comprends pas bien comment l'utiliser
J'ai Script1.au3 qui fait appel à une fonction de Script2.au3 de cette façon :
Et je souhaite compiler mes 2 scripts. Bien évidemment, Script1.exe ne peut pas accéder à MyFunction().
Je cherche à faire quelque chose du genre :
Est-ce possible de faire quelque chose comme ça ?
Le but est de pouvoir donner ces 2 scripts compiler à quelqu'un pour qu'il puisse les exécuter sans modifier le contenu par accident ou en tout cas facilement (je sais que des secripts compilés peuvent être décompilés).
Re: [..] Questions sur la compilation
Posté : mer. 01 juil. 2015 08:56
par TopXm
Hello,
Oui c'est possible, (mais pas la meilleure soluce), avec quelque chose dans ce genre :
► Afficher le texteScript1
Code : Tout sélectionner
ShellExecuteWait('Script2.exe', 'TonArgu1 TonArgu2')
ShellExecuteWait('Script2.exe', 'TonNewArgu1')
Exit
► Afficher le texteScript2
Code : Tout sélectionner
Local $I, $Arg[2] = ['', '']
If $CmdLine[0] = 0 Then
MsgBox(0, @ScriptName, 'Aucun paramètre passé à Script2.exe')
Else
; On récupères les 2 premiers paramètres (voir le 1er s'il n'y en a qu'un)
For $I = 1 to $CmdLine[0]
If $I > 2 Then ExitLoop
$Arg[$I -1] = $CmdLine[$I]
Next
; on appelle la fonction
MyFunction($Arg[0], $Arg[1])
EndIf
Exit
Func MyFunction($Arg1 = '', $Arg2 = '')
MsgBox(0, @ScriptName, 'Je lance MyFunction avec $Arg1 = ' & $Arg1 & ' et $Arg2 = ' & $Arg2)
EndFunc
Mais tu t'ennuies pour rien autant faire comme indiqué par Jchd, tu isoles ta fonction dans un AU3 que tu inclus dans les scripts
où tu en as besoin :
► Afficher le texteMyFonction.au3
Code : Tout sélectionner
Func MyFonction($Arg1 = '', $Arg2 = '')
MsgBox(0, @ScriptName, 'Je lance MyFunction avec $Arg1 = ' & $Arg1 & ' et $Arg2 = ' & $Arg2)
EndFunc
► Afficher le texteScript1
Code : Tout sélectionner
#include 'MyFonction.Au3'
MyFonction('Arg1Script1', 'Arg2Script1')
► Afficher le texteScript2
Code : Tout sélectionner
#include 'MyFonction.Au3'
MyFonction('Arg1Script2', 'Arg2Script2')
Re: [..] Questions sur la compilation
Posté : mer. 01 juil. 2015 10:39
par caropost
Bonjour,
Merci pour ta réponse
Je sais que je m'ennuie pour rien mais c'est une contrainte forte qu'on m'a demandé alors je n'ai pas spécialement le choix...
Ce qu'on m'a demandé c'est de faire Script1 qui n'est pas destiné à être modifié (sauf en cas d'évolution du script) et Script2 qui est destiné à être modifié relativement souvent.
Mon Script1 est fait de cette manière :
► Afficher le texte
Code : Tout sélectionner
#include 'MesInclude.au3'
; Quelques lignes de code
MyFunction($arg1, $arg2)
;D'autres lignes de code
Et Script2 est construit de cette manière :
► Afficher le texte
Code : Tout sélectionner
#include 'MesInclude.au3'
Func MyFunction($arg1, $arg2)
; Corps de ma fonction
EndFunc
Et on m'a demandé de compiler les 2 scripts et de trouver comment je dois faire pour lancer tout ça...
Je vais tester ta solution
EDIT : Merci beaucoup, ça fonctionne en effet

Dans mon Script1, lorsque je fais appel à la fonction qui se trouve dans Script2, je mets des variables. Est-il possible de mettre plusieurs variables avec ce système ?
EDIT2 : J'ai trouvé !

Dans Script1 il faut mettre :
Code : Tout sélectionner
Local $arg1 = 'MyArg1'
Local $arg2 = 'MyArg2'
ShellExecuteWait('Script2.exe', $arg1 & ' ' & $arg2)

Re: [..] Questions sur la compilation
Posté : mer. 01 juil. 2015 14:52
par caropost
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...)
Re: [..] Questions sur la compilation
Posté : mer. 01 juil. 2015 20:30
par TopXm
Re
Pour ton problème d'argument avec des espaces, il te suffit de délimiter tes arguments avec des guillemets.
Code : Tout sélectionner
ShellExecuteWait('Script2.exe ', '"' & @ProgramFilesDir & '" "Argument avec espace"')
Par contre c'est quoi ton souci 3 ?
[EDIT]Je crois que j'ai capté ton souci. J'ai modifié Script2 pour qu'il gère 4 paramètres :
► Afficher le texteScript2
Code : Tout sélectionner
Local $I, $Arg[4] = ['', '', '', '']
If $CmdLine[0] = 0 Then
MsgBox(0, @ScriptName, 'Aucun paramètre passé à Script2.exe, on continue la mission')
Else
; On récupères les 4 premiers paramètres
For $I = 1 to $CmdLine[0]
If $I > 4 Then ExitLoop
$Arg[$I -1] = $CmdLine[$I]
Next
; on appelle la fonction
MyFunction($Arg[0], $Arg[1], $Arg[2], $Arg[3])
EndIf
;
; Ton code de Script2.au3
;
Exit
Func MyFunction($Arg1 = '', $Arg2 = '', $Arg3 = '', $Arg4 = '')
MsgBox(0, @ScriptName, 'Je lance MyFunction avec $Arg1 = ' & $Arg1 & ' et $Arg2 = ' & $Arg2 & _
' $Arg3 = ' & $Arg3 & ' $Arg4 = ' & $Arg4)
EndFunc
Après il te faut juste passer les bons arguments au bon endroit :
► Afficher le texteScript1
Code : Tout sélectionner
Local $I
Local $Nombre = 7 ;Nombre de fleurs (forcé à 7 pour l'exemple)
Local $Handle = FileOpen('File.txt', 1)
Local $Directory = "Mon Dossier"
For $I = 1 to $Nombre
$Arg2 = 'E' & $I + 7
ShellExecuteWait('Script2.exe ', $I & ' ' & $Arg2 & ' ' & $Handle & ' "' & $Directory & '"')
Next
FileClose($Handle)
Exit
Re: [..] Questions sur la compilation
Posté : mer. 01 juil. 2015 20:53
par orax
Je ne sais pas quels sont tes besoins exacts mais si l'ordre des arguments peut varier, comme
script2.exe -couleur bleu -a -i -x et
script2.exe -a -couleur rouge alors regarde
https://www.autoitscript.com/forum/topi ... tenceflag/
Re: [..] Questions sur la compilation
Posté : jeu. 02 juil. 2015 09:25
par caropost
TopXm a écrit :Re
Pour ton problème d'argument avec des espaces, il te suffit de délimiter tes arguments avec des guillemets.
Code : Tout sélectionner
ShellExecuteWait('Script2.exe ', '"' & @ProgramFilesDir & '" "Argument avec espace"')
Par contre c'est quoi ton souci 3 ?
[EDIT]Je crois que j'ai capté ton souci. J'ai modifié Script2 pour qu'il gère 4 paramètres :
► Afficher le texteScript2
Code : Tout sélectionner
Local $I, $Arg[4] = ['', '', '', '']
If $CmdLine[0] = 0 Then
MsgBox(0, @ScriptName, 'Aucun paramètre passé à Script2.exe, on continue la mission')
Else
; On récupères les 4 premiers paramètres
For $I = 1 to $CmdLine[0]
If $I > 4 Then ExitLoop
$Arg[$I -1] = $CmdLine[$I]
Next
; on appelle la fonction
MyFunction($Arg[0], $Arg[1], $Arg[2], $Arg[3])
EndIf
;
; Ton code de Script2.au3
;
Exit
Func MyFunction($Arg1 = '', $Arg2 = '', $Arg3 = '', $Arg4 = '')
MsgBox(0, @ScriptName, 'Je lance MyFunction avec $Arg1 = ' & $Arg1 & ' et $Arg2 = ' & $Arg2 & _
' $Arg3 = ' & $Arg3 & ' $Arg4 = ' & $Arg4)
EndFunc
Après il te faut juste passer les bons arguments au bon endroit :
► Afficher le texteScript1
Code : Tout sélectionner
Local $I
Local $Nombre = 7 ;Nombre de fleurs (forcé à 7 pour l'exemple)
Local $Handle = FileOpen('File.txt', 1)
Local $Directory = "Mon Dossier"
For $I = 1 to $Nombre
$Arg2 = 'E' & $I + 7
ShellExecuteWait('Script2.exe ', $I & ' ' & $Arg2 & ' ' & $Handle & ' "' & $Directory & '"')
Next
FileClose($Handle)
Exit
Re

Merci !

Je le savais qu'il y avait besoin de guillemets mais la chaleur a due me ramollir le cerveau hier, j'ai eu une illumination ce matin avant d'avoir fini de lire ton message ^^ Et le le finissant, j'ai vu que c'était la même idée
Plus qu'à voir comment passer des variables de Script2 à Script1
@Orax : Merci, je vais regarder ça

Re: [..] Questions sur la compilation
Posté : jeu. 02 juil. 2015 15:08
par caropost
Je ne m'en sors pas trop avec ce que tu as donné Orax :/
J'ai essayé plusieurs façons sans résultat...
► Afficher le texteScript1
Code : Tout sélectionner
; ****** PARTIE OK ******
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+6))
$image = GUICtrlCreatePic($directory & "\Image.jpg", 124, 0, 196, 33)
GUICtrlCreateLabel("Fleurs", 10, 40, 300, 40)
GUICtrlCreateLabel("Nom", 110, 40, 100, 20)
GUICtrlCreateLabel("Couleur", 210, 40, 100, 20)
For $i = 0 to $nombre - 1
$tableau[$i][0] = GUICtrlCreateLabel("Fleur " & $i+1, 10, 20*($j+2), 100, 21)
$tableau[$i][1] = GUICtrlCreateInput("Nom " & $i+1, 110, 20*($j+2), 100, 21)
$tableau[$i][2] = GUICtrlCreateInput("Couleur " & $i+1, 210, 20*($j+2), 100, 21)
$j = $j + 1
Next
$Button = GUICtrlCreateButton("VALIDER",110, 20*($nombre+4), 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)
_ArrayDisplay($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-1][3] & ' ' & $handle & ' ' & '"' & $directory & '"')
; **** CE QUE J'AI AVANT COMPILATION ET QUI EST A MODIFIER ****
Run("notepad.exe")
WinWaitActive("Sans titre - Bloc-notes")
Send("NOM : " & nom() & "{ENTER}")
Sleep(500)
Send("PRENOM : " & prenom() & "{ENTER 2}")
Sleep(500)
Send(getInfo())
Sleep(500)
Next
► Afficher le texteScript2
Code : Tout sélectionner
; **** PARTIE OK ****
Local $nom = "Dupond"
Local $prenom = "Martin"
Local $I, $Arg[4] = ['', '','', '']
If $CmdLine[0] = 0 Then
MsgBox(0, @ScriptName, 'Aucun paramètre passé à Script2.exe')
Else
; On récupères les 2 premiers paramètres (voir le 1er s'il n'y en a qu'un)
For $I = 1 to $CmdLine[0]
If $I > 4 Then ExitLoop
$Arg[$I -1] = $CmdLine[$I]
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 & ' et $Arg2 = ' & $Arg2 & ' et $Arg3 = ' & $Arg3 & ' et $Arg4 = ' & $Arg4)
EndFunc
; **** CE QUE J'AI AVANT COMPILATION ET QUI EST A MODIFIER ****
Func nom()
Return $nom
EndFunc
Func prenom()
Return $prenom
EndFunc
Func getInfo()
Local $monInfo = "Info de haute importance !"
Return $monInfo
EndFunc
Avec l'UDF du lien, j'ai essayé _CmdLine_Get et _CmdLine_GetValByIndex, j'ai essayé de modifier un peu ces UDF sans résultat probant...
Re: [..] Questions sur la compilation
Posté : ven. 03 juil. 2015 16:11
par caropost
Bonjour,
Je me suis peut-être un peu compliqué la vie mais j'ai trouvé un moyen de récupérer mes variables de Script2 dans Script1

Je regarde le 1er argument et en fonction de ce que c'est, j'envoie ma fonction MyFunction(), nom() ou encore getInfo()

J'ai dû changer les return en Send mais bon...
Re: [..] Questions sur la compilation
Posté : lun. 06 juil. 2015 16:21
par caropost
Bonjour,
J'ai un petit soucis que je ne comprends pas...
J'utilise le plinkwrapper de cette page :
https://www.autoitscript.com/forum/topi ... ntry890269
Dans Script1.au3 et dans Script2.au3, j'ouvre un fichier de log (pas le même) pour enregistrer ce qu'il se passe sur le terminal. Jusque là, ça fonctionne. Là où ça se corse c'est après avoir compilé mes scripts...
Le fichier de log que j'ouvre dans Script1.exe fonctionne bien mais pas celui du fichier de log dans Script2.exe. Et pourtant, j'ai fais un pur copier/coller... J'ai essayé de fermer le handle, de mettre un sleep pour le cas où ça ne prendrait pas en compte la fermeture tout de suite, j'ai changé de dossier le 2ème fichier de log, j'ai même mis en commentaire la ligne qui ouvre mon 1er fichier de log mais rien à faire... Le fichier se créer bien au bon endroit mais rien n'écrit à l'intérieur...
J'ai essayé plusieurs "versions".
► Afficher le texteScript1.exe qui fonctionne
Code : Tout sélectionner
$_plinkhandle1=_Start_plink($directory1 & "\plink.exe","COM1")
_Init_plink_log($repertoire & "\Log\Log1.log")
_Say(@CR)
_Expect("login :")
_SayPlus($sUsername)
_Expect("password")
_SayPlus($sPass)
; OU
$hlog = _Init_plink_log($repertoire & "\Log\Log1.log")
_Say(@CR)
_Expect("login :")
_SayPlus($sUsername)
_Expect("password")
_SayPlus($sPass)
FileClose($hlog)
► Afficher le texteScript2.exe qui ne fonctionne pas totalement
Code : Tout sélectionner
$_plinkhandle2=_Start_plink($repertoire & "\plink.exe", "COM2")
_Init_plink_log($repertoire & "\Log\Log" & $i & ".log")
_Say(@CR)
_Expect("login :")
_SayPlus($sUsername)
_Expect("password")
_SayPlus($sPass)
; OU
$_plinkhandle2=_Start_plink($repertoire2 & "\plink.exe", "COM2")
$hlog2 = _Init_plink_log($repertoire & "\Log\Log" & $i & ".log")
_Say(@CR)
_Expect("login :")
_SayPlus($sUsername)
_Expect("password")
_SayPlus($sPass)
FileClose($hlog2)
; OU
$_plinkhandle2=_Start_plink($repertoire2 & "\plink.exe", "COM2")
$hlog2 = _Init_plink_log($repertoire2 & "\Log\Log" & $i & ".log")
_Say(@CR)
_Expect("login :")
_SayPlus($sUsername)
_Expect("password")
_SayPlus($sPass)
FileClose($hlog2)
; OU
$_plinkhandle2=_Start_plink($repertoire2 & "\plink.exe", "COM2")
$hlog2 = _Init_plink_log($repertoire2 & "\Log\Log_Test.log")
_Say(@CR)
_Expect("login :")
_SayPlus($sUsername)
_Expect("password")
_SayPlus($sPass)
FileClose($hlog2)
Est-ce que vous auriez une idée du pourquoi je n'arrive pas à écrire dans mon second fichier de log ?
Re: [..] Questions sur la compilation
Posté : lun. 06 juil. 2015 21:56
par orax
S'il est possible d'exécuter le Script2 depuis SciTE (sans le compiler en .exe), alors ajoute ça au début du script :
Si une erreur est passée inaperçue, elle se verra avec ça (le code d'erreur sera affiché).
(Comme alternative il y a aussi... menu Tools > Trace: Add trace lines.)
Re: [..] Questions sur la compilation
Posté : mar. 07 juil. 2015 10:32
par caropost
Merci

Je n'ai pas vu de bug... J'ai ajouté dans Script2.au3 une ligne d'appel à la fonction avec les paramètres souhaités pour que cela fonctionne.
Voici ce qui était marqué dans le SciTE :
► Afficher le texte
Code : Tout sélectionner
>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Documents and Settings\Desktop\File\Script2.au3" /UserParams
+>09:49:04 Starting AutoIt3Wrapper v.14.801.2025.0 SciTE v.3.4.4.0 Keyboard:00000409 OS:WIN_XP/Service Pack 2 CPU:X64 OS:X86 Environment(Language:0409)
+> SciTEDir => C:\Program Files\AutoIt3\SciTE UserDir => C:\Documents and Settings\Local Settings\Application Data\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Documents and Settings\Local Settings\Application Data\AutoIt v3\SciTE
>Running AU3Check (3.3.12.0) from:C:\Program Files\AutoIt3 input:C:\Documents and Settings\Desktop\File\Script2.au3
+>09:49:04 AU3Check ended.rc:0
>Running:(3.3.12.0):C:\Program Files\AutoIt3\autoit3.exe "C:\Documents and Settings\Desktop\File\Script2.au3"
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
!> Starting in DebugMode..
; Déroulement du script normalement
[...]
; Je force l'arrêt voyant que rien n'étais marqué dans le fichier de log
+>09:53:09 AutoIt3.exe ended.rc:0
+>09:53:09 AutoIt3Wrapper Finished.
>Exit code: 0 Time: 245.6
C'est là qu'effectivement il doit y avoir un problème mais je ne comprends pas parce que j'ai vraiment c/c la ligne qui l'initialise... J'ai également les mêmes fichiers inclus qui sont utiles dans les 2 scripts...
Re: [..] Questions sur la compilation
Posté : mar. 07 juil. 2015 18:17
par orax
caropost a écrit :J'ai ajouté dans Script2.au3 une ligne d'appel à la fonction avec les paramètres souhaités pour que cela fonctionne.
Depuis SciTE, menu View > Parameters pour simuler un passage de paramètres en ligne de commande.
Le fichier de log pour Script2 se trouve-t-il dans un dossier "spécial" tel que sur le bureau ou dans un dossier du bureau ? Car @DesktopDir <> @DesktopCommonDir.
http://autoitscript.fr/forum/viewtopic. ... 233#p89233
Re: [..] Questions sur la compilation
Posté : mer. 08 juil. 2015 09:29
par caropost
Les fichiers de log sont enregistrés dans un dossier "Logs" qui se trouve sur le bureau. Je n'utilise pas @DesktopDir et @DesktopCommonDir, je mets le chemin en dur dans le script (dans une variable mais je défini le chemin au début). Les fichiers se créent bien au bon endroit, c'est l'écriture à l'intérieur qui ne se fait pas... Script2 se trouve dans le dossier "File" qui se trouve sur le bureau mais ça ne fonctionne pas, que j'enregistre le fichier de logs dans "Logs", "File" ou directement sur le bureau...
J'ai essayé comme tu m'as dit : simuler des paramètres dans le menu View mais cela n'a rien donné...
► Afficher le texte
Code : Tout sélectionner
>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Documents and Settings\Desktop\File\Script2.au3" /UserParams 1 COM1 "C:\Documents and Settings\Desktop\Logs"
+>08:53:16 Starting AutoIt3Wrapper v.14.801.2025.0 SciTE v.3.4.4.0 Keyboard:00000409 OS:WIN_XP/Service Pack 2 CPU:X64 OS:X86 Environment(Language:0409)
+> SciTEDir => C:\Program Files\AutoIt3\SciTE UserDir => C:\Documents and Settings\Local Settings\Application Data\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Documents and Settings\Local Settings\Application Data\AutoIt v3\SciTE
>Running AU3Check (3.3.12.0) from:C:\Program Files\AutoIt3 input:C:\Documents and Settings\Desktop\File\Script2.au3
+>08:53:17 AU3Check ended.rc:0
>Running:(3.3.12.0):C:\Program Files\AutoIt3\autoit3.exe "C:\Documents and Settings\Desktop\File\Script2.au3" 1 COM1 "C:\Documents and Settings\Desktop\Logs"
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
!> Starting in DebugMode..
;Déroulement du script
[...]
;Arrêt forcé en voyant que ça ne fonctionnait pas
+>08:53:44 AutoIt3.exe ended.rc:0
+>08:53:44 AutoIt3Wrapper Finished.
>Exit code: 0 Time: 28.26
EDIT : J'ai essayé avec @DesktopDir et @DesktopCommonDir et ça ne fonctionne pas mieux (le fichier se créer bien au bon endroit mais rien ne s'inscrit dedans)
Re: [..] Questions sur la compilation
Posté : ven. 17 juil. 2015 14:51
par caropost
Personne n'a d'idée ?
EDIT : problème résolu, des variables que j'avais oublié de reporter dans Script2 -_-