Estil possible d'esvoyer qqc a un programme console apps en C sous windows quand on l'appelle a partir d'un autre programme?
Version imprimable
Estil possible d'esvoyer qqc a un programme console apps en C sous windows quand on l'appelle a partir d'un autre programme?
Oui soit:
-avec l'opérateur de redirection "<" et il faudra prélever les données sur "stdin",
-avec la ligne de commande, il suffit alors de récupérer les données dans le tableau prévu à cet effet.
Wouah....tu parles couramment le "mironais" toi !!!!Citation:
Envoyé par seriousme
Moi, je dois être un peu dyslexique dans ma tête, parceque franchement je n'ai rien compris à la question....:mrgreen:
Tu peux passer des parametres au programme appelé
Sinon ya les FIFO pour la communication interprocessusCode:system("programme param1 param2");
Programma param1 param2 c quoi ca?Citation:
Envoyé par Gruik
Sinon merci a tous
Et pour recevoir?
Du programme apelé?
Avec:
int argc:nombre de paramètres,
char *argv[]:liste des paramètres.
oui
Note que la liste d'arguments comprend aussi le nom du programme appeléCode:
1
2
3 int main (int argc, char * argv[]) { }
Ex : pour l'appel "programme param1 param2"
argc = 3
argv = {"programme", "param1", "param2"};
(pour schematiser)
Je suis perdu, c'est pour apeler ou recevoir?Citation:
Envoyé par Gruik
VOus puriez pas me metres les 2 cote a cot?
Pour appeler:
Pour recevoir:Code:system("prog_a_appeler.exe param_1 param_2 ... param_n");
il suffit de lire les parametres dans le tableau de n+1 éléments "argv".
Cette question a déja été traitée maintes fois ; voir les forums VC++, dev windows et faire une rechercheCitation:
Envoyé par miron
Il faut obtenir le HINSTANCE et HANDLE du programme à appeler avec FindWindow/Ex et éventuellement EnumWindows.
Après avoir obtenu le HANDLE , utiliser SendMEssage et envoyer un message personnalisé
J'ai des pb, windows me dit que mon prog a rencontrer un pb et doit fermer....Citation:
Envoyé par seriousme
Je n'ai pas du tout comprendre...mon prog apelant...Code:
1
2
3
4
5
6
7
8
9 #include <stdio.h> #include <stdlib.h> int main() { system("Ecoutez-moi.exe 22"); system("PAUSE"); return 0; }
mon prog apelé
Code:
1
2
3
4
5
6 int main(int argc, char *argv[]) { if (*argv[2]!=22) exit(0); ... }
C'est argv[1] et il faut faire:
Code:if (strcmp(argv[1],"22")!=0)
Merci.Citation:
Envoyé par seriousme
Citation:
Envoyé par miron
Les sorties stdout de l'appelant servent d'entrées stdin à l'appelé.Code:C:\> appelant | appele
Exemple courant :
Au lieu de sortir le texte d'un coup à l'écran, il sort par bloc de N lignes avec une pause...Code:C:\> type unlongtexte.txt | more