Exécuter cmd DOS

Signaler
Messages postés
19
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
13 juin 2004
-
Messages postés
19
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
13 juin 2004
-
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

Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007

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 ++
Messages postés
19
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
13 juin 2004

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
Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007

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);
Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007

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);
Messages postés
19
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
13 juin 2004

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... ?
Messages postés
19
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
13 juin 2004

C'est bon j'ai enfin réussi en changeant le stdout :D !!

thx +
Messages postés
19
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
13 juin 2004

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