Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Lauryx en 7 Noviembre 2010, 20:13 PM

Título: Ejecutar .exe desde C++
Publicado por: Lauryx en 7 Noviembre 2010, 20:13 PM
Hola a todos. Me gustaría saber cómo puedo hacer para ejecutar un exe desde C++ y obtener su salida para luego poderla tratar con mi programa.

¡Muchas gracias y un saludo!
Título: Re: Ejecutar .exe desde C++
Publicado por: madpitbull_99 en 7 Noviembre 2010, 20:59 PM
Si mal no me acuerdo se puede hacer con system() o con CreateProcess (http://support.microsoft.com/kb/175986), con system seria algo como :

Código (c++) [Seleccionar]
system("C:\capeta\mi_programa.exe")

Corregidme si me equivoco.
Título: Re: Ejecutar .exe desde C++
Publicado por: Shell Root en 7 Noviembre 2010, 21:13 PM
Pero si mal no recuerdo debería ser así,
system("C:\\PoC\\capeta\\NOTAS.exe");

Pero no sé si se puede obtener el resultado, -como lo hace php-
Cita de: XafiloX en  7 Noviembre 2010, 20:13 PMobtener su salida para luego poderla tratar con mi programa.
Título: Re: Ejecutar .exe desde C++
Publicado por: Lauryx en 7 Noviembre 2010, 23:49 PM
Hola, gracias por responder.

He buscado ambas funciones y ninguna de las dos devuelve el resultado...system solamente devuelve 0, que significa que lo ha ejecutado con exito...

A ver si alguien conoce alguna función más...
Título: Re: Ejecutar .exe desde C++
Publicado por: BlackZeroX en 8 Noviembre 2010, 00:04 AM
.
Interceptando las salidas del debug...

Dulces Lunas!¡.
Título: Re: Ejecutar .exe desde C++
Publicado por: Lauryx en 8 Noviembre 2010, 09:16 AM
Como que el debug? Te refieres al debug que sirve para depurar los programas? Pero yo lo que quiero es un programa que llame a otro y realice ciertas operaciones sobre la salida del otro, cómo haría para llamar al debug y que me devuelva los resultados?
Título: Re: Ejecutar .exe desde C++
Publicado por: piou en 8 Noviembre 2010, 14:49 PM
Yo eso lo hacía redireccionando la salida a un archivo y leyendolo desde el programa, por ejemplo, este programa que ejecuta en linux el gcc y compila un archivo, y luego saca los errores, este justo es bastante inutil pero sirve como ejemplo:

Este es el programa:
#include <stdio.h>

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

system("gcc acompilar.c -o Main > archivo.txt 2>&1");
FILE *fichero;
    char letra;

    fichero = fopen("archivo.txt","r");
    if (fichero==NULL)
       {
       printf( "No se puede abrir el fichero.\n" );
       exit( 1 );
       }
    printf( "Contenido del fichero:\n" );
    letra=getc(fichero);
    while (feof(fichero)==0)
          {
          printf( "%c",letra );
          letra=getc(fichero);
          }
    if (fclose(fichero)!=0)
{
       printf( "Problemas al cerrar el fichero\n" );
    }

return 0;
}


Este es el archivo en C que le paso al gcc, con un fallo para que haya salida por stderr
#include <stdio.h>

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

printf(FALLOGARRAFAL);
return 0;
}


Si ejecutamos el programa se obtiene:
laptop:~$ ./a.out
Contenido del fichero:
acompilar.c: In function 'main':
acompilar.c:6: error: 'FALLOGARRAFAL' undeclared (first use in this function)
acompilar.c:6: error: (Each undeclared identifier is reported only once
acompilar.c:6: error: for each function it appears in.)


Y efectivamente en el archivo archivo.txt tenemos los fallos que nos ha mostrado antes.
acompilar.c: In function 'main':
acompilar.c:6: error: 'FALLOGARRAFAL' undeclared (first use in this function)
acompilar.c:6: error: (Each undeclared identifier is reported only once
acompilar.c:6: error: for each function it appears in.)
Título: Re: Ejecutar .exe desde C++
Publicado por: MazarD en 8 Noviembre 2010, 15:17 PM

-CreatePipe
-CreateProcess
-En el startupinfo de createprocess asignas tu pipe a la salida estandar (hStdOutput)
-ReadFile sobre la pipe

Investiga sobre pipes, en google o la msdn seguro que hay mucha información al respecto

Saludos!
Título: Re: Ejecutar .exe desde C++
Publicado por: Lauryx en 8 Noviembre 2010, 17:57 PM
Ummm...he empezado a buscar sobre pipes y me estoy dando cuenta de que es un auténtico mundo por descubrir...Cuando consiga hacer el programilla os lo digo por aquí.

Un saludo y ¡¡muchísimas gracias por la ayuda!!