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