Appeler à une ligne commande dos

Signaler
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
-
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
-
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

Messages postés
15134
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
16 septembre 2021
99
Hello,
Regardes ShellExecute() ou CreateProcess()


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
donner un exemple SVP ?
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
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.
Messages postés
15134
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
16 septembre 2021
99
Hello,
CreateProcess()
ShellExecute()

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
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.
Messages postés
15134
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
16 septembre 2021
99
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...
Messages postés
393
Date d'inscription
lundi 22 juin 2009
Statut
Membre
Dernière intervention
23 décembre 2011
5
Merci.