Ligne de commande

Résolu
Kangourou_Nomade Messages postés 92 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 16 janvier 2007 - 23 févr. 2006 à 15:14
yserver Messages postés 203 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 8 septembre 2006 - 24 févr. 2006 à 17:13
pour executer une ligne de commande j'utilise
int system(char *)
cela dit, je n'ai pas de retour.
J'aimerai obtenir le retour de ma commande
(exemple : pour dir/p, la liste de des fichiers et dossiers d'un repertoire)

dans Shell32.dll j'ai vu une fonction qui s'appelait PathProcessCommand
qui a comme argument les chaines d'entree et de sortie.
Ca parait correspondre a mon besoin.
Mais je n'arrive pas a l'utiliser correctement (je n'ai pas bien pige quels pointeur elle voulait)
Si vous avez des exemples je suis preneur (ou une autre fonction repondant a mon besoin)
merci.

Le Rasta fou rien, vous le savez bien

9 réponses

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
23 févr. 2006 à 16:45
Sinon tu peux faire des CreateProcess qui te permet de contrôler le processus et de récupérer n'importe quelle sortie.

@+
Arnotic,
Admin CS,
http://dev.winsysdev.com
MVP Visual C++
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
23 févr. 2006 à 15:25
Apparement ca serait :

char *pszCommand = new char[1024];
char *pszRet = new char[1024];

strcpy(pszCommand, "dir/p");

if (PathProcessCommand(pszCommand, pszRet, 1024, PPCF_ADDARGUMENTS) < 0)
{
// La fonction a échoué
}
else
{
// Tout est OK
}

Shell
0
Kangourou_Nomade Messages postés 92 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 16 janvier 2007
23 févr. 2006 à 15:36
nan c'est ce qu j'ai essaye mais deja les deux premiers arguments sont en unsigned short * donc on peut pas faire comme ca. De plus, si le deuxieme est la chaine out, il faudrait lui envoyer une reference et non une copie. c'est la ou je suis perdu en fait.

***********************************

**********Jah
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
23 févr. 2006 à 16:29
Ah vi en effet, ca prend marche avec de l'UNICODE.
Va voir ici tu trouveras comment déclarer tes variables :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/PathProcessCommand.asp

Shell
0

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

Posez votre question
Kangourou_Nomade Messages postés 92 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 16 janvier 2007
23 févr. 2006 à 16:38
merci c'est cool mais c'est l'unique doc que j'avais deja.
et c'est la que j'ai vu que c'etait du unsigned short *

***********************************

**********Jah
0
Kangourou_Nomade Messages postés 92 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 16 janvier 2007
23 févr. 2006 à 16:51
Ah oui ca m'a l'air nickel

***********************************

**********Jah
0
yserver Messages postés 203 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 8 septembre 2006
23 févr. 2006 à 18:05
Bonjour
Tu peux aussi tout simplement utiliser un redirecteur pour ta commande. Cela donne system("ping localhost >c:\log.txt")
Ainsi dans le fichier log.txt tu a tres exactement la meme chose que ce que tu aurais dans la consol.
Bonne soiré.
0
Kangourou_Nomade Messages postés 92 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 16 janvier 2007
24 févr. 2006 à 12:54
oue sauf que, si je fe un system, jouvre un cmd, or moi ce que je veux c'est balancer une commande dans une boite noire qui ne cree pas de nouvelle fenetre et qui renvoi le resultat dans un char * ou un string.
C'est pourquoi l'idee de l'API me semblait seduisante.
avec CreateProcess j'ai la possibilite de cacher la fenetre, donc c'est deja un peu mieux.
Mais c'est pas ce que je cherchais en fait.

***********************************

**********Jah
0
yserver Messages postés 203 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 8 septembre 2006
24 févr. 2006 à 17:13
Autre suguestion ShellExecuteEx qui me semble plus aisé à utiliser. Si c'est juste pour une petite commande.
0
Rejoignez-nous