Faire executer des lignes de commande a cmd

Signaler
Messages postés
54
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
18 avril 2007
-
Messages postés
54
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
18 avril 2007
-
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

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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
Messages postés
54
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
18 avril 2007

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...
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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
Messages postés
54
Date d'inscription
samedi 11 septembre 2004
Statut
Membre
Dernière intervention
18 avril 2007

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