Ejecutar un programa que no he hecho yo en uno hecho por mi

Sara Orozco
17 de Diciembre del 2003
Hola:
Programo en C++ Builder y necesito ejecutar un programa que no he hecho yo como una ventana hija dentro del programa que estoy programando en c++ builder. Por ejemplo, necesito ejecutar la calculadora de windows en mi programa como ventana hija, no como aplicaci贸n aparte. ¿Alguien me puede ayudar?
Muchas gracias.

francis_tuc
17 de Diciembre del 2003
Realmente no s茅 si es posible, pero f铆jate en la ayuda de Delphi o C++ Builder (Windows SDK) sobre la API ShellExecute.
Esta API de Windows ejecuta y abre documentos...

Pedro
17 de Diciembre del 2003
Mira este C贸digo es dificilisimo de encontrar, me cost贸 mucho trabajo porque en la red no encontr茅 ninguno para c++ builder as铆 que lo adapt茅... Este Funciona por lo menos en Builder5.
------------------------------------------------------------------------
void CreaProcesoHijoyEsperaqueTermine(const AnsiString& Ejecuta)
{
PROCESS_INFORMATION piProcInfo;
STARTUPINFO siStartInfo;

// Cargar los miembros de la Estructura STARTUPINFO
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.lpReserved = NULL;
siStartInfo.lpReserved2 = NULL;
siStartInfo.cbReserved2 = 0;
siStartInfo.lpTitle = Ejecuta.c_str();
siStartInfo.lpDesktop= NULL;
siStartInfo.dwFlags = STARTF_USESHOWWINDOW; //Permite Activar modo de Visualizacion de la aplication
siStartInfo.wShowWindow=SW_HIDE;//Modo de Visualizaci贸n de la Aplicacion

// Creaci贸n del Proceso Hijo
CreateProcess(
NULL,
Ejecuta.c_str(), //Lineas de Comando
NULL, // Atributo para la seguridad del proceso
NULL, // primary thread security attributes
false, // handles are inherited
NORMAL_PRIORITY_CLASS,// Creaci贸n de flags o Tipo de Prioridad de la Aplicaci贸n
NULL, // use parent's environment
NULL, // use parent's current directory
&siStartInfo, // puntero a STARTUPINFO
&piProcInfo); // Informaci贸n del Proceso

// Esperar hasta que el proceso hijo Termine y contin煤a con el padre (esto sirve muchisimo puesto que genera llamado a aplicaciones Externas de forma S铆ncrona)
DWORD rc = WaitForSingleObject(
piProcInfo.hProcess, // Proceso handle
INFINITE);
CloseHandle(piProcInfo.hProcess);
CloseHandle(piProcInfo.hThread);
}