Lancer un programme a partir d'un programme en C [c/c++] - Programmation
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 
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 
Marsh Posté le 07-11-2001 à 13:38:06
si le nom du prog et les arg sont constant , syste doit marcher.
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 
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, ... 
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 ? 
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
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.  
 
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? 
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... 
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 ???
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? 
Marsh Posté le 11-11-2001 à 15:58:31
c dans quel librairie (conio,stdio,...???) 
 
et c quoi la syntaxe 
Marsh Posté le 11-11-2001 à 16:19:05
| Citation : 
   | 
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" ); 
... 
} 
Marsh Posté le 11-11-2001 à 19:03:26
plutot que printf il vaut mieux utiliser perror: 
| Code : 
 | 
 
affichera un truc du genre: 
| Code : 
 | 
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   
    
   )
 ) 
[edtdd]--Message édité par [SDF]Poire--[/edtdd]
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(); 
   } 
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]
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(); 
   } 
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! 
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 : 
 | 
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 
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"? 
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(); ? 
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? 
Marsh Posté le 07-11-2001 à 13:22:08
Lancer un programme a partir d'un programme en C
comment faut-il faire?
Merci