Faire executer des lignes de commande a cmd

cs_Mick7 Messages postés 54 Date d'inscription samedi 11 septembre 2004 Statut Membre Dernière intervention 18 avril 2007 - 18 mai 2006 à 19:07
cs_Mick7 Messages postés 54 Date d'inscription samedi 11 septembre 2004 Statut Membre Dernière intervention 18 avril 2007 - 20 mai 2006 à 10:21
Salut,

voila je m'exlique je veux executer cmd (avec CreateProcess par
exemple) et lui passer plusieurs lignes de commande une apres les
autres  par exemple  faire  "cd G:"  puis 
"dir" (qui me donnera ce que il y a dans G:) alors qu'avec un simple
CreateProcess(NULL, "cmd /k dir", NULL, NULL, TRUE, 0, 0, 0, &si,
&pi) il me fera un dir sur le dossier dans lequel le .exe est
executer.

Je sais pas si vous avez compris mais si c'est le cas je vous en supplie aidez-moi.

6 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
18 mai 2006 à 21:13
Je comprend pas trop bien mais si tu veut executer des command MS-DOS tu peut toujours utiliser system

system("cd g:\\test\\allo");
system("dir");

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
18 mai 2006 à 21:19
Et si tu veut avoir l'emplacement de ton executable, utilise cette fonction avant d'utiliser system ou CreateProcess (je l'ai volé à BruNews :) c'est quelle est utile cette petit fonction):

void AppPathInitialize()
{
  char szthis[300];
  char* c = szthis + GetModuleFileName(0, szthis, 300);  while(*c !'\\') c--; *c 0;
  SetCurrentDirectory(szthis);
}

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
cs_Mick7 Messages postés 54 Date d'inscription samedi 11 septembre 2004 Statut Membre Dernière intervention 18 avril 2007
19 mai 2006 à 18:36
oui je pense que ton idée doit marché mais le probleme c'est que je
veux rediriger la sortie de la commande à l'aide de createpipe() et
j'ai l'impression que system() ne permet pas de le faire ou sinon je
sais pas comment on fait...
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
19 mai 2006 à 21:40
T'a été voir sur MSDN? Parce que moi je peux plus t'aider la. Voici l'addresse pour CreatePipe

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipc/base/createpipe.asp

___________________________________________
Les plus grands esprits trouvent toujours une solution
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
19 mai 2006 à 21:42
Ya même un exemple avec ça. Voici l'addresse si tu le trouve pas:

http://msdn.microsoft.com/library/en-us/dllproc/base/creating_a_child_process_with_redirected_input_and_output.asp

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
cs_Mick7 Messages postés 54 Date d'inscription samedi 11 septembre 2004 Statut Membre Dernière intervention 18 avril 2007
20 mai 2006 à 10:21
C'est bon j'ai trouvé dans Createprocess il y a un parametre qui me
permet de choisir dans quelle repertoire la commande est executée donc
j'ai plus qu'a recuperer la derniere ligne de la fenetre ms-dos qui
indique en faite le nouveau path et la mettre comme parametre
0
Rejoignez-nous