Comment lancer une application avec passage d'arguments en .net

Résolu
dadavaleo Messages postés 8 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 19 juin 2007 - 6 avril 2007 à 11:40
dadavaleo Messages postés 8 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 19 juin 2007 - 6 avril 2007 à 13:52
Bonjour,

J'ai besoin d'aide pour passer des arguments au programme C que je lance à partir de mon programme .net. 

En C pour récupérer les arguments, on a les paramètres int argc et char* argv[].

Mon programme .NET lance le programme ecrit en C avec le code ci-dessous, je veux pouvoir passer une variable à ce programme.

Merci de m'aider ... 

**************************************************************************

'Declenchement du process qui permet de tuer proprement l'application GBA_Link

With kill_GBA_process.StartInfo.FileName = Kill_GBA_exe_file

.WindowStyle = ProcessWindowStyle.Normal
.UseShellExecute False.CreateNoWindow
False.RedirectStandardOutput False.WorkingDirectory Application.StartupPath

.Arguments = ""

End
Withkill_GBA_process.Start()

 ************************************************************************* 

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 41
6 avril 2007 à 11:43
Ben regarde la propriété .Arguments, c'est dans cette propriété que tu doit mettre les arguments à passer au lancement du process

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
dadavaleo Messages postés 8 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 19 juin 2007
6 avril 2007 à 12:02
Merci de me répondre Casy.

J'ai regardé déjà, mais ça ne fonctionne pas, le programme se lance mais ne prend pas en compte mon argument.

Pour être davantage précis prenons l'exemple suivant :

Mon programme C affiche la chaine de caractere passer en argument :

*************************************************************
int

main(
int argc,
char * argv[]){

printf ("%s",*argv[0]);

return 0;

}
***********************************************************************
Jusque là je pense que il n'y a pas d'erreur

***********************************************************************

Mon programme .NET, lui passe la chaîne "Hello World" pour que mon programme C l'affiche:

'Declenchement du process qui permet de tuer proprement l'application GBA_Link

With kill_GBA_process.StartInfo.FileName = Kill_GBA_exe_file

.WindowStyle = ProcessWindowStyle.Normal
.UseShellExecute False.CreateNoWindow
False.RedirectStandardOutput False.WorkingDirectory Application.StartupPath

.Arguments = "Hello World"

End
Withkill_GBA_process.Start()

******************************************************************************

Ce code ne fonctionne pas, donc je pense qu'il y a quelquechose qui m'échappe mais quoi????

Désolé si la question vous parait bateau et

Merci pour votre aide !!  
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 41
6 avril 2007 à 12:10
tu dois certainement avoir un problème avec ton appli C car chez moi ton code marche en prenant Notepad comme appli et en lui passant un fichier an argument. notepad est bien lancé et le fichier ouvert.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 41
6 avril 2007 à 12:12
Regarde si c'est pas plutot argv[1] qu'il faut afficher. argv[0] ne serait pas le nom de l'executable par hasard ??,

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dadavaleo Messages postés 8 Date d'inscription lundi 26 février 2007 Statut Membre Dernière intervention 19 juin 2007
6 avril 2007 à 13:52
Merci Casy,

Tu avais raison, mon problème venait de l'appli C, mon erreur était d'afficher *argv[0] qui n'est pas un string.

Il fallait afficher argv[0].
De plus argv[0] est effectivement le nom de l'exécutable.
Donc pour afficher "hello world" il fallait prendre "argv[1]" et "argv[2]" car chaque string séparé par un espace est placé dans une case différente. 

J'avais pas fais attention, j'ai pas les yeux en face des trous aujourd'hui!! 

Merci, bon Week-end  
3