Hola.
Para que el código sea reutilizable podés hacerte una función:
Código:
void CreateProcessAndWait(AnsiString AppName, AnsiString Args)
{
STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
Trim(AppName);
Trim(Args);
Args = " " + Args;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo);
if (CreateProcess(AppName.c_str(), Args.c_str(), NULL, NULL,
FALSE, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &StartInfo, &ProcInfo))
WaitForSingleObject(ProcInfo.hThread, INFINITE);
}
Llamada de ejemplo:
Código:
{
CreateProcessAndWait("C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe",
"C:\\PREVIEW.PDF");
...
}
Saludos.
Edito: Tené en cuenta que si la aplicación es de 16 bits
lpApplicationName tendrá que ser
NULL, mientras que el nombre de la aplicacion y los parámetros deberan ser especificados en
lpCommandLine. (
CREATE PROCESS function)