Lanzar una aplicación de windows

Hola experto, me gustaría hacer un programa en c que lanzara cualquier aplicación de windows, por ejemplo el buscaminas o cualquier otra. Me han dicho que es difícil de hacer pero para eso estas tu, XD, muchas gracias.

1 respuesta

Respuesta
1
Para realizar esto puedes usar la función execl que necesita la librería:
#include <stdlib.h>
Esta función recibe varios parámetros:
1.- El path completo de la aplicación a lanzar.
2.- El nombre del archivo ejecutable a lanzar.
3,4,5 ... .- los argumentos que le quieras pasar a ese programa.
N.- necesita que el ultimo parametro sea NULL.
Por ejemplo para lanzar el explorador de windows NT:
execl("c:\\Winnt\\Explorer.exe",
"Explorer.exe",NULL);
Para lanzar un aplicacion tuya por ejemplo:
execl("c:\\MiApp\\Programa.exe",
"Programa.exe","1","Hola",NULL);
Es importante saber que esta función deja de ejecutar el primer programa, es decir, carga en memoria el nuevo programa a ejecutar y quita el primer programa.
Si tu tienes un programa que hace cosas, llama al buscaminas y luego sigue haciendo cosas, estas ultimas no las hará nunca porque en memoria se carga el buscaminas y se borra el primer programa.
Para poder continuar con los dos programas a la vez debes crear un hijo del primer programa y en el ejecutar la función execl mientras que el padre sigue el funcionamiento normal del primer programa.
Muchas gracias me ha servido de mucho, pero estoy interesado en ejecutar varios programas sin que se me borre de la memoria el mio. ¿Si eres tan amable explicame como crear un hijo del primer programa?, aunque a lo mejor eso complica las cosas y no lo entendería, muchas gracias de todas formas.
Para crear un proceso hijo debes usar:
PROCESS_INFORMATION piProcInfo;
STARTUPINFO siStartInfo;
// Set up members of the PROCESS_INFORMATION structure.
ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );
// Set up members of the STARTUPINFO structure.
ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
siStartInfo.cb = sizeof(STARTUPINFO);
// Create the child process.
return CreateProcess(NULL,
"child", // command line
NULL, // process security attributes
NULL, // primary thread security attributes
TRUE, // handles are inherited
0, // creation flags
NULL, // use parent's environment
NULL, // use parent's current directory
&siStartInfo, // STARTUPINFO pointer
&piProcInfo); // receives PROCESS_INFORMATION
Con esta función creas el proceso hijo, entonces en el hijo lanzas la aplicación que quieras y en el padre vuelves a crear otro hijo y vuelves a lanzar otra aplicación en ese segundo hijo, así tantos hijos como aplicaciones quieras lanzar.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas