Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: invisible_hack en 11 Mayo 2010, 22:14 pm



Título: ¿Capturar los datos de salida por pantalla del CMD en C/C++?
Publicado por: invisible_hack en 11 Mayo 2010, 22:14 pm
Hola  :D

Hacía ya bastante que no posteaba una duda aqui, y hoy ha tocado  :P

Pues veréis, os pongo en situación...

Todos sabemos que con system() se pueden ejecutar comandos del DOS en C/C++

Pero yo lo que busco es, no ejecutar comandos del DOS, sino capturar la respuesta que da el CMD a esos comandos...

Me explico...

Si abrimos el CMD y escribimos directamente

"hola"

Al darle a Intro, nos devolverá un mensaje diciendo que "hola no se reconoce como comando bla bla bla..."

Pues eso es lo que yo quisiera que mi programa capturase y devolviese...

Es decir, la respuesta que nos da el CMD cuando ejecutamos algún comando, ya sea válido o inválido.

He probado a capturarlo con cin, pero que va, pienso que tendría que ser alguna movida tipo redirigir todas las respuestas que de la CMD a mi programa...

La verdad es que estoy con C++, pero si alguien sabe en C pues tampoco me importaría, intentaría luego acomodarlo a C++ que seguro no sería dificil pasarlo.

¿Alguien me podría dar una idea de lo que podría hacer para conseguirlo?

Gracias  ;D


Título: Re: ¿Capturar los datos de salida por pantalla del CMD en C/C++?
Publicado por: Littlehorse en 11 Mayo 2010, 23:35 pm
Hay varias formas, podes pasarle a la consola algo como esto (Windows): comando > archivo.txt  2>&1 y luego leer el archivo, obviamente no es la mejor forma pero seguramente sea la mas sencilla.
Ahora, para hacerlo bien primero tienes que especificar sobre que sistema ya que es importante saberlo, pero a grandes rasgos, con buscar sobre pipes ya lo tienes listo.

Tal vez te sirva esto (http://support.microsoft.com/kb/q190351/) u esto (http://www.codeproject.com/kb/threads/redir.aspx).
Si te fijas por ahí hay sources para descargar. en google seguro hay algunos mas.

Cualquier cosa ya sabes.

Saludos


Título: Re: ¿Capturar los datos de salida por pantalla del CMD en C/C++?
Publicado por: invisible_hack en 20 Mayo 2010, 17:49 pm
En primer lugar, lo siento por tardar tanto en contestar  :-\

En segundo lugar, muchas gracias horse, tú como siempre ahí al pie del cañón resolviendo dudas  ;)

A ver si algún dia puedo echarte yo una mano  :xD

Y pues lo he estado mirando, esos enlaces, pero creo que el tema de los threads me queda un poquito grande aún, dejaré el proyecto aparcado momentaneamente, pero ese par de links se van directos a los marcadores  ;)


Título: Re: ¿Capturar los datos de salida por pantalla del CMD en C/C++?
Publicado por: Riki_89D en 20 Mayo 2010, 19:08 pm
Para eso abria que recurri a las API CreatePipe,etc etc,abria que crear una tuberia,yo creo que seria le mejor forma!


un saludo


Título: Re: ¿Capturar los datos de salida por pantalla del CMD en C/C++?
Publicado por: [Zero] en 20 Mayo 2010, 19:49 pm
E0N dejó un buen source en su blog que seguro te sirve para lo que quieres hacer:

Código:
http://e0n-productions.blogspot.com/2009/07/funciones-para-crear-una-remote-shell.html

Ahí crea pipes para redirigir la entrada y salida a su app.

Saludos