Exécuter cmd DOS

ro0tsman Messages postés 19 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 13 juin 2004 - 11 juin 2004 à 14:20
ro0tsman Messages postés 19 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 13 juin 2004 - 13 juin 2004 à 23:42
Bonjour tt l'monde,
voilà mon problème : je souhaite exécuter une commande DOS donc ca c'est bon c'est pas un problème mais cette commande est du type "netstat -a > c:\o.txt" (c'est à dire que j'enregistre le résultat dans un fichier)

Je pourrai bien sur utiliser system() pour ça mais ce n'est pas très esthétique vu que la fenêtre apparaît et disparaît

J'ai essayé ShellExecute(NULL,"open","netstat","- a > c:\\o.txt","", SW_HIDE);
Mais ca n'veut pas marché !
Et je suis vraiment à coup d'idée, quelqu'un peut-il m'aider... ?

7 réponses

cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
11 juin 2004 à 22:20
Pourquoi n'essaie-tu pas d'écrire l'OutPut dans un fichier log. Tu récupère les sorties console dans un buffer et tu utilises WriteFile. Dans une source, j'utilise le principe. Cherches BindShell Win32 ++
0
ro0tsman Messages postés 19 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 13 juin 2004
11 juin 2004 à 23:27
Salut Stormy,

j'ai trouvé ta source j'ai regardé mais tout ça est assez compliqué pour moi...
Aurais-tu de la lecture là-dessus ou bien le code spécifique dans ton programme parce que j'ai du mal à le déterminer...

Merci pour ton aide
0
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
12 juin 2004 à 21:09
Pour commencer, ta ligne de commande ne me semble pas très juste. Je pense que c'est plus juste ainsi:

netstat -a > c:\\o.txt

HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);

Je doute qu'il faille 'exploser' ta ligne de commande comme tu le fais. Qu'est ce que ça donne ça:

ShellExecute(NULL,"open","netstat - a > c:\\o.txt", NULL, NULL, SW_HIDE);
0
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
12 juin 2004 à 21:11
Le formatage du texte est vraiment pourri. Je comprend pas.. bref je recommence:

ShellExecute(NULL,"open","netstat -a > c:\\o.txt", NULL, NULL, SW_HIDE);
0

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

Posez votre question
ro0tsman Messages postés 19 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 13 juin 2004
13 juin 2004 à 00:07
Oui j'avais déjà essayé comme ça aussi mais pas plus de résultat, je ne comprend d'ailleurs pas trop pourquoi... (si tu le fais depuis démarrer-> exécuter ca ne marche pas non plus...).

Il n'y a qu'avec system() que ca marche, mais je ne comprend pas comment rediriger la sortie vers un fichier plutôt que vers cmd

Une solution... ?
0
ro0tsman Messages postés 19 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 13 juin 2004
13 juin 2004 à 18:55
C'est bon j'ai enfin réussi en changeant le stdout :D !!

thx +
0
ro0tsman Messages postés 19 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 13 juin 2004
13 juin 2004 à 23:42
Euh bon j'avais trouvé ce code :

int main(int argc, char *argv[])
{
FILE *fic;

if ( freopen("file1.txt", "w", stdout) == NULL)
fprintf(stderr, "erreur a la redirection de stdout\n");

system ("netstat -a");

fclose(stdout);

return 0;


}

Il marche très bien mais seulement pour un programme en mode console, il ne veut pas marcher avec un programme Win, il me créer le fichier mais ne me met pas le résultat de la commande dedans

Donc je vous demande encore votre aide !!!
Merci
0