[RESOLU] Envoi de paramètres d'un *.exe à un autre *. exe ?
[RESOLU] Envoi de paramètres d'un *.exe à un autre *. exe ?
Il semblerait qu'il soit possible d'envoyer des paramètres d'un programme principal à un autre pour son exécution par la cde RunProgram() avec paramètres.
Malgré les explications de la doc. en ligne, je n'arrive pas à comprendre le principe de fonctionnement de l'envoi et la réception.
Je souhaiterai envoyer au lancement d'un programme auxiliaire (aux.exe) piloter par un programme principal (princ.exe) des informations comme :
"LFMT", "1", "oui" qui seraient lues et interpréter par le programme receveur.
- De quelle manière envoyer ces "instructions" depuis princ.exe ?
- Quelle est la méthode pour que le prg receveur (aux.exe) utilise ces données lors de son lancement ?
Merci pour vos éclaircissements.
- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
exemple receiver
Code : Tout sélectionner
Define a.s
a = GetEnvironmentVariable("a")
If Len(a)
MessageRequester("PRG1","a = "+a)
Else
MessageRequester("PRG1","a was no seted")
EndIf
Code : Tout sélectionner
SetEnvironmentVariable("a","hello world")
RunProgram("prg1.exe")
Work at Centre Spatial de Liège
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
Tous les paramètres dans le champs 2 et par défaut séparés par un espace
Code : Tout sélectionner
RunProgram("princ.exe", "LFMT 1 oui", "")
CountProgramParameters() et ProgramParameter(i)
Premier paramètre 0
Code : Tout sélectionner
For i = 0 To CountProgramParameters()
Debug ProgramParameter(i)
Next
C'est comme en C: nombre de paramètres et tableau des paramètres, sauf qu'en PB il n'y a pas besoin de le préciser.
Code : Tout sélectionner
int main(int argc, char *argv[]);
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
Je teste cela et je vous tiens au courant !
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
Voici mes lignes de commandes :
Programme émetteur :
Code : Tout sélectionner
iaco$ = "LFKC"
avion$ = "Takeoff"
RunProgram("PHM\OACI\Fiche_airport.exe", iaco$ + " " + avion$, "")
Code : Tout sélectionner
ID1 = RunProgram("PHM\OACI\Fiche_airport.exe", "LFKC Takeoff" , "")
Code : Tout sélectionner
;Premières lignes du programme récepteur
For i = 0 To CountProgramParameters()
Debug ProgramParameter(i)
Next
iaco$ = ProgramParameter(0)
avion$ = ProgramParameter(1)
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
Les paramètres sont bien reçus, j'ai vérifier sur le programme récepteur en ajoutant :
Code : Tout sélectionner
iaco$ = ProgramParameter(0)
avion$ = ProgramParameter(1)
If OpenConsole()
PrintN("Code airport : " + iaco$)
PrintN("Code Avion : " + avion$ + ".png")
Delay(8000)
CloseConsole()
EndIf
avion$ = avion$ + ".png"
;avion$ = "Takeoff.png"
;iaco$ = "LFKC"

Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
Je ne comprends pas bien.Mais, le programme ne prends pas en compte les deux variables reçues alors, qu'en enlevant les 2 point-virgules ensuite, cela fonctionne normalement
Il manque le reste du programme, mais je suppose que tu sais que ce qui est après une commande Debug est ignoré une fois compilé en EXE donc préférer MessageRequester() plutôt qu'un éventuel Debug avions$ qui n'affichera rien.
Donc
Code : Tout sélectionner
iaco$ = ProgramParameter(0)
avion$ = ProgramParameter(1)
; If OpenConsole()
; PrintN("Code airport : " + iaco$)
; PrintN("Code Avion : " + avion$ + ".png")
; Delay(1000)
; CloseConsole()
; EndIf
MessageRequester("", iaco$ + #CRLF$ + avion$)
avion$ = avion$ + ".png"
;avion$ = "Takeoff.png"
;iaco$ = "LFKC"
MessageRequester("", avion$ + #CRLF$ + iaco$)
Code : Tout sélectionner
---------------------------
---------------------------
Takeoff.png
LFKC
---------------------------
OK
---------------------------
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
Le reste du programme ne devrait pas te donner beaucoup d'informations sachant que :
Cela fonctionne comme cela :
Code : Tout sélectionner
;iaco$ = ProgramParameter(0)
;avion$ = ProgramParameter(1)
;avion$ = avion$ + ".png"
MessageRequester("", iaco$ + #CRLF$ + avion$)
avion$ = "Takeoff.png"
iaco$ = "LFBT"
Code : Tout sélectionner
iaco$ = ProgramParameter(0)
avion$ = ProgramParameter(1)
avion$ = avion$ + ".png"
MessageRequester("", iaco$ + #CRLF$ + avion$)
;avion$ = "Takeoff.png"
;iaco$ = "LFBT"





Code : Tout sélectionner
iaco$ = ProgramParameter(0)
avion$ = ProgramParameter(1)
avion$ = avion$ + ".png"
MessageRequester("", iaco$ + #CRLF$ + avion$)
avion$ = "Takeoff.png"
iaco$ = "LFBT"
Et, dans ce dernier cas, je visualise aussi les variables en entrée.
J'ai aussi tenté de modifier les variables envoyées, sans plus de succès :
Code : Tout sélectionner
SENDiaco$ = ProgramParameter(0)
SENDavion$ = ProgramParameter(1)
avion$ = SENDavion$ + ".png"
MessageRequester("", SENDiaco$ + #CRLF$ + SENDavion$)
avion$ = SENDavion$
iaco$ = SENDiaco$
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
Compilateur >
Options du Compilateur >
Compiler/Exécuter >
Paramètres de l'exécutable >
et là tu mets les paramètres séparés par un espace
Takeoff LFBT
Ton code
Code : Tout sélectionner
iaco$ = ProgramParameter(0)
avion$ = ProgramParameter(1)
avion$ = avion$ + ".png"
MessageRequester("", iaco$ + #CRLF$ + avion$)
Code : Tout sélectionner
---------------------------
Takeoff
LFBT.png
---------------------------
OK
---------------------------
Code : Tout sélectionner
iaco$ = ProgramParameter(0)
avion$ = ProgramParameter(1)
avion$ = avion$ + ".png"
; N'affiche que .png si aucun paramètre n'est passé (normal)
MessageRequester("", iaco$ + #CRLF$ + avion$)
avion$ = "Takeoff.png"
iaco$ = "LFBT"
; Ne pas oublier de réafficher...
; Affichera bien les deux chaines puisque réatualisées
MessageRequester("", iaco$ + #CRLF$ + avion$)
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
Dans ce premier cas, cela ne fonctionne pas :
Code : Tout sélectionner
iaco$ = ProgramParameter(0)
avion$ = ProgramParameter(1)
avion$ = avion$ + ".png"
MessageRequester("", iaco$ + #CRLF$ + avion$)
avion$ = "Takeoff.png"
iaco$ = "LFBT"
MessageRequester("", iaco$ + #CRLF$ + avion$)
Code : Tout sélectionner
;iaco$ = ProgramParameter(0)
;avion$ = ProgramParameter(1)
;avion$ = avion$ + ".png"
MessageRequester("", iaco$ + #CRLF$ + avion$)
avion$ = "Takeoff.png"
iaco$ = "LFBT"
MessageRequester("", iaco$ + #CRLF$ + avion$)
Ce dernier exemple, par contre, fonctionne lorsque je lance directement ce programme récepteur sans l'appel précédent de l'émetteur !
Pour rappel, l'émetteur envoi cela :
Code : Tout sélectionner
avion$ = "Takeoff"
ID1 = RunProgram("PHM\OACI\Fiche_airport.exe", iaco$ + " " + avion$, "")
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?

a compiler en "params.exe"
Code : Tout sélectionner
OpenConsole("")
a=CountProgramParameters()
If a
For param=1 To a
PrintN( ProgramParameter() )
Next
Else
PrintN("no params")
EndIf
Input()
Code : Tout sélectionner
RunProgram("params.exe","/test /lol test "+Chr(34)+"ceci est un texte contenant des espaces"+Chr(34),"")
Re: Envoi de paramètres d'un *.exe à un autre *. exe ?
J'ai trouvé (

Depuis le départ, la méthode de Marc est correct mais, c'est Case qui m'a mis sur la piste :
Il faut que les programmes émetteur des paramètres et récepteur des paramètres soient dans le même dossier.
Et, ce n'était pas le cas hier !
Pourtant, les chemins étaient indiqués et le récepteur recevait bien les paramètres, mais cela ne suffit donc pas !
Une fois déplacé, tout fonctionne normalement.
Merci à tous pour votre aide
L'émetteur envoie cela :
Code : Tout sélectionner
iaco$ = "LFMT"
avion$ = "Takeoff"
RunProgram("Fiche.exe", iaco$ + " " + avion$, "")
Sans avoir recours à : MessageRequester("", iaco$ + #CRLF$ + avion$)iaco$ = ProgramParameter(0)
avion$ = ProgramParameter(1)
avion$ = avion$ + ".png"
Re: [RESOLU] Envoi de paramètres d'un *.exe à un autre *. ex
Sauf mention contraire, je teste toujours ce que je posteDepuis le départ, la méthode de Marc est correcte

Non (heureusement, car ça limiterait les possibilités)Il faut que les programmes émetteur des paramètres et récepteur des paramètres soient dans le même dossier.
Simplement si le programme qui reçoit les données est dans un répertoire différent de celui qui les envoie, il faut mettre le chemin complet.
Ex:
Code : Tout sélectionner
iaco$ = "LFMT"
avion$ = "Takeoff"
RunProgram("c:\tmp\Fiche.exe", iaco$ + " " + avion$, "")
Ton premier exemple
utilisait un chemin relatif (pas de lecteur) et non pas absolu.RunProgram("PHM\OACI\Fiche_airport.exe"
Ça c'est simplement pour afficher le résultat dans l'exemple de code.Sans avoir recours à : MessageRequester("", iaco$ + #CRLF$ + avion$)
MessageRequester à la place de Debug, car le programme Fiche.exe étant compilé, les commandes Debug sont ignorées.
