Appeler à une ligne commande dos

boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 - 17 août 2009 à 16:57
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 - 18 août 2009 à 16:47
Bonjour,

Dans mon programme C, je voulais appeler un autre programme X qui est exécuté par une ligne commande dos.
Donc, comment je vais appeler à une ligne commande dos dans mon programme C ?

Merci.

7 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
17 août 2009 à 17:50
Hello,
Regardes ShellExecute() ou CreateProcess()


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
17 août 2009 à 18:01
donner un exemple SVP ?
0
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
17 août 2009 à 22:26
Bonjour,
les fonctions ShellExecute() ou CreateProcess() ne sont pas définies dans mon programme C avec Visual Studio 2008 sous Windows.

Comment vous définissez ces fonctions ?

Merci.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
18 août 2009 à 09:07
Hello,
CreateProcess()
ShellExecute()

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0

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

Posez votre question
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
18 août 2009 à 14:54
Bonjour,

1) Oui.çà marche la fonction systeme()
system("la ligne de commande");

cette ligne de commande prend comme paramètre:
- le nom de programme
- fichier d'entrée
- option
- fichier de sortie

Exemple:
system("algorithms.MagaliceA_Lat essai.xml false resultat.lat.xml");



Dans ce cas, le nom de fichier d'entrée "essai.xml" est connu.
De même,le nom de fichier de sortie "resultat.xml" est connu.

Dans mon programme C, avant d'appeler system(...)
Le nom de fichier d'entrée et le nom de fichier de sortie sont terminés au fur à mesure. Ils ne sont pas connus en avance.

Donc, Qu'est ce que je vais passer Le nom de fichier d'entrée et le nom de fichier de sortie à la fonction system() ? et comment ?

2)Comment exécute cette ligne de commande par
CreateProcess()
ShellExecute()

Merci.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
18 août 2009 à 15:14
Il te faut stocker dans des variables le nom des fichiers d'entrée et de sortie (je ne sais pas de quelle manière tu les récupères, à toi de voir).
Ensuite, pour construire ta ligne de commande, tu peux faire ceci:
char command[256];
sprintf(command,"algorithms.MagaliceA_Lat %s false %s",input,output); // input et output sont renseignés
system(command);


Concernant ShellExecute():
ShellExecute(NULL, NULL, command, NULL, NULL, SW_SHOWNORMAL)

Pour l'explication, je te conseille de suivre le lien que j'ai donné précédemment.

Concernant CreateProcess, je te renvoie vers l'exemple de la MSDN. Dans l'argument "Command line", il te faut remplacer "argv[1]" par "command" (en se basant sur mon exemple précédent

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
18 août 2009 à 16:47
Merci.
0
Rejoignez-nous