[c/c++] Lancer un programme a partir d'un programme en C

Lancer un programme a partir d'un programme en C [c/c++] - Programmation

Marsh Posté le 07-11-2001 à 13:22:08    

Lancer un programme a partir d'un programme en C
comment faut-il faire?
 
Merci

Reply

Marsh Posté le 07-11-2001 à 13:22:08   

Reply

Marsh Posté le 07-11-2001 à 13:28:46    

va voir dans shellExecute ou CreateProcess

Reply

Marsh Posté le 07-11-2001 à 13:30:48    

la commande system est pas mal .
tu es sous windows?
sinon sous linux , exec est tres pratique


---------------

Reply

Marsh Posté le 07-11-2001 à 13:31:59    

je suis plutot c
comment aller voir shellexecute et createprocess
 
je precise que le prgm que je veux lancer est un prgm dos et que j'aimerais lui passer des parametre

Reply

Marsh Posté le 07-11-2001 à 13:38:06    

si le nom du prog et les arg sont constant , syste doit marcher.


---------------

Reply

Marsh Posté le 07-11-2001 à 13:51:21    

faut aller voir dans le msdn  
 
http://msdn.microsoft.com
 
y a system, execl ou des trucs comme ca je crois

Reply

Marsh Posté le 07-11-2001 à 14:19:16    

Pour passer des paramètres, il suffit de fabriquer la chaîne qui sera concaténée à la commande.
Si on veut lancer TOTO.EXE avec les paramètres dudu.bid -c +h, on fabrique la chaîne "TOTO.EXE dudu.bid -c +h" qu'on passe à ShellExecute.
Je sais pas si le post du même sujet (y a qq mois) est trouvable par "recherche". On peut attendre que le prog soit terminé, ou continuer, ...

Reply

Marsh Posté le 07-11-2001 à 17:02:10    

CARBON_14 a écrit a écrit :

Pour passer des paramètres, il suffit de fabriquer la chaîne qui sera concaténée à la commande.
Si on veut lancer TOTO.EXE avec les paramètres dudu.bid -c +h, on fabrique la chaîne "TOTO.EXE dudu.bid -c +h" qu'on passe à ShellExecute.
Je sais pas si le post du même sujet (y a qq mois) est trouvable par "recherche". On peut attendre que le prog soit terminé, ou continuer, ...  




 
Mais il veut faire un soft sous DOS, donc l'API *Windows* ShellExecute ne marche pas, non ?


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 07-11-2001 à 17:43:09    

si c sous dos c pas la peine de se casser la tête c la commande system il me semble

Reply

Marsh Posté le 08-11-2001 à 09:47:23    

Sous DOS, c'est bien system, de mémoire (:)).
C'est pas précisé, d'où le flou. :D

Reply

Marsh Posté le 08-11-2001 à 09:47:23   

Reply

Marsh Posté le 10-11-2001 à 21:25:58    

Alors je v clarifier les choses:
en gros je suis sous windows2000 mais je programme en mode console donc ce sera un prog dos
je suppose que vous connaissez la commande (dos) de w2k
net send [nom ordi] ["texte"]
 
alors je veux faire un prog qui me permette  :
1 : lancer net send
2 : me permette de specifier le texte et le nombre de fois que je veux lancer la commande
 
Merci
 
alors? system ou shell?

Reply

Marsh Posté le 10-11-2001 à 22:08:03    

Si c sous 2000 cherche du côté de la fonction spawn.

Reply

Marsh Posté le 10-11-2001 à 22:08:53    

tu veux faire un programme DOS ou un programme Console ?
si tu fais un programme Windows Console ça a le look d'un programme DOS, mais tu peux utiliser les fonctions de l'API Windows...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 10-11-2001 à 22:53:50    

100% dos

Reply

Marsh Posté le 11-11-2001 à 10:28:11    

Pourquoi tu fais pas tout simplement une interface GUI sous Windows avec lorsque tu cliques sur un bouton, un appel à Net send ???

Reply

Marsh Posté le 11-11-2001 à 12:11:46    

je ne c pour l'instant programmer que des prog dos
donc tous ce qui est bouton, api32, gui de windows, je ne c pas utiliser.
 
Alors quelle fonction de quelle librairie dois je utiliser?

Reply

Marsh Posté le 11-11-2001 à 15:36:23    

system()

Reply

Marsh Posté le 11-11-2001 à 15:58:31    

c dans quel librairie (conio,stdio,...???)
 
et c quoi la syntaxe

Reply

Marsh Posté le 11-11-2001 à 16:19:05    

Citation :

Code :
  1. #include <stdlib.h>
  2. int system(const char *command);


 
Issues an operating system command.
 
system invokes the operating system command processor to execute an operating system command, batch file, or other program named by the string command, from inside an executing C program.
 
To be located and executed, the program must be in the current directory or in one of the directories listed in the PATH string in the environment.
 
The COMSPEC environment variable is used to find the command processor program file, so that file need not be in the current directory.
 
Return Value
 
If command is a NULL pointer, system returns nonzero if a command processor is available.
 
If command is not a NULL pointer, system returns 0 if the command processor was successfully started.
 
If an error occurred, a -1 is returned and errno is set to one of the following:
 
ENOENT Path or file function not found
ENOEXEC Exec format error
ENOMEM Not enough memory


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-11-2001 à 17:01:25    

Par exemple, pour lancer le programme TOTO.EXE, tu écris
 
void main(void)
{
...
err = system( "TOTO.EXE" );
if(err==-1)
   printf("Erreur" );
...
}

Reply

Marsh Posté le 11-11-2001 à 19:03:26    

plutot que printf il vaut mieux utiliser perror:

Code :
  1. perror('Lancement du truc :');


affichera un truc du genre:

Code :
  1. Lancement du truc: File not found


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 11-11-2001 à 19:25:16    

thunderbird54 a écrit a écrit :

Alors je v clarifier les choses:
en gros je suis sous windows2000 mais je programme en mode console donc ce sera un prog dos
je suppose que vous connaissez la commande (dos) de w2k
net send [nom ordi] ["texte"]
 
alors je veux faire un prog qui me permette  :
1 : lancer net send
2 : me permette de specifier le texte et le nombre de fois que je veux lancer la commande
 
Merci
 
alors? system ou shell?  




G fait ton truc avec net send....
Si t'as pas trouvé contact moi par mail ou sur ICQ.....
 
(C pas bien de vouloir flooder C camarades  :non:   :D  :D )

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 12-11-2001 à 10:19:50    

salut les gars voici l'ebauche du prgm
je c pas gerer les chaine de caractere aidez moi
Merci
 
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
 
 
   void main(void)
   {
      int nbfois,i,touche;
      char lettre;
      char temp[150]="net send backus08 texte",ordi,texte;
      int system();
 
      printf("Sur quel ordinateur voulez vous que le message s'affcihe?" );
      scanf("%c",&ordi);
   
      printf("Combien de fois voulez vous lancer net send?" );
      scanf("%hd",&nbfois);
 
      printf("\n Que voulez vous qu'affiche net send?" );
      scanf("%c",&texte);
   
   
 
   
      for(i=0;i<nbfois;i++)
      {
         system(temp);
      }
 
      getch();
   }

Reply

Marsh Posté le 12-11-2001 à 10:38:05    

le %hd et le %c sont très bizarre.
c'est quoi le h ?
et le %c ça marche ? c'est pas %s normalement ?
et tu devrais utiliser fgets(texte, sizeof(texte), stdin) plutôt que scanf pour le message, car scanf s'arrête aux espaces... (à moins qu'il ne le fasse pas avec le %c mais je croyais que c'était pour 1 seul caractère %c).
et pourquoi faire une déclaration de "int system();" ?

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-11-2001 à 13:27:38    

j'ai fait une nouvelle version
qui utuilise s au lieu de c
hd c pour short int, donc comme j'ai mis int c donc d que je dois utiliser, mais ca ne change pas grand chose
 
nouvelle version qui devrait marcher mais qui ne marche pas, je ne c pas pourquoi. Alors docteur? pas d'erreur a la compilation mais une erreur lors de l'execution : commande incorrecte
 
   void main(void)
   {
      int nbfois,i,touche;
      char lettre;
      char temp[150]="net send ",ordi[10],texte[140];
      int system();
 
      printf("\n Sur quel ordinateur voulez vous que le message s'affiche?" );
      scanf("%s",&ordi[0]);
      fflush(stdin);
 
      printf("\n Combien de fois voulez vous lancer net send?" );
      scanf("%d",&nbfois);
      fflush(stdin);
 
      printf("\nQue voulez vous qu'affiche net send?" );
      scanf("%s",&texte[0]);;
      fflush(stdin);
   
      strcat(temp,ordi);
      strcat(temp," " );
    strcat(temp,texte);
      printf("\n%s \n",temp);
 
      for(i=0;i<nbfois;i++)
      {
         system(temp);
      }
   
      getch();
   }

Reply

Marsh Posté le 12-11-2001 à 13:30:23    

alors pour scanf je savais pas, peut tu expliciter davantage la fonction donc tu me parles
 
pour la declaration, eh bas c un truc que g trouve comme ca!
avant ca ne marchait pas et maintenant que j'ai rajoute la ligne et bien ca marche!

Reply

Marsh Posté le 12-11-2001 à 13:44:16    

tes scanf sont bizarres, &text[0] c un peu lourd. Et pour le message ca marche pas si y a des espaces avec le scanf :
 

Code :
  1.  void main(void)
  2.  {
  3.     int nbfois,i,touche;
  4.     char lettre;
  5.     char temp[150],ordi[10],texte[140];
  6.     int system(); /* je le laisserais pas, mais bon... */
  7.     printf("\n Sur quel ordinateur voulez vous que le message s'affiche?" );
  8.     scanf("%s",ordi);
  9.     fflush(stdin);
  10.     printf("\n Combien de fois voulez vous lancer net send?" );
  11.     scanf("%d",&nbfois);
  12.     fflush(stdin);
  13.     printf("\nQue voulez vous qu'affiche net send?" );
  14.      fgets(texte, sizeof(texte), stdin);
  15.     fflush(stdin);
  16.      sprintf(temp, "net send %s %s", ordi, texte);
  17.     printf("\n%s \n",temp);
  18.     for(i=0;i<nbfois;i++)
  19.     {
  20.        system(temp);
  21.     }
  22.  
  23.     getch();
  24.  }


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-11-2001 à 15:58:24    

je v regarder ca chez moi
des que je rentre je te dit si ca marche
 
Merci

Reply

Marsh Posté le 12-11-2001 à 16:07:17    

j'ai reussi a tester avant de rentrer chez moi
et ca ne marche pas, tjs la meme erreur.
 
je me demande si ca n'est pas du aux caracteres \0 contenu a la fin de temp. Qu'en penses tu?
 
Ne devrait-on pas faire quelques arrangement dans la commande system(). quand je mets system(temp), que comprends le compilateur si temp = "net send backus08 texte"?

Reply

Marsh Posté le 12-11-2001 à 16:08:45    

le sprintf met un \0 a la fin donc c'est pas le probleme...
c'est quoi qui marche pas exactement ?
c'est pas par hasard à cause de ton int system(); ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-11-2001 à 20:44:00    

non je l'ai enleve,
pas de probleme a la compilation mais a l'execution
il me dit commande incorrecte et je me demandais si ce n'tait pas a cause du /0 a la fin de la chaine
 
system ne comprends peut etre pas ca?

Reply

Marsh Posté le 13-11-2001 à 14:18:28    

up

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed