Ejecutar un archivo .bat
Publicado por rraces (25 intervenciones) el 31/03/2006 15:48:46
Hola amigos, mi problema es el siguiente tengo que ejecutar archivo .bat , este archivo muestra por pantalla si se ha ejecutado correctamente o no. Pues si utilizo la función "system" el código de retorno es siempre el mismo, entonces decidi utilizar CreateProcess para que lo ejecute y poder capturar la salida que se muestra en la shell, pero no me funciona el CreateProcess, con un .exe si me funciona pero con el .bat no. Es porque solo puede ejecutar .exe? Existe alguna otra función o algun parámetro del CreateProcess que sea necesario, ´la parte parte del código que llama al .bat es la siguiente:
// Inicializo la estructura STARTUPINFO
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof StartupInfo;
StartupInfo.dwFlags |= STARTF_USESTDHANDLES;
StartupInfo.hStdOutput = hChildStdoutWr;
StartupInfo.hStdInput = hChildStdinRd;
StartupInfo.hStdError = hChildStdoutWr;
//EJECUCION DE CMNPROJ
//**************************************************************************//
ValorProceso= CreateProcess("ant.bat",
parametros,
NULL,
NULL,
TRUE,
0,
NULL,
NULL,
&StartupInfo,
&ProcessInfo);
WaitForSingleObject(ProcessInfo.hProcess, INFINITE); // Espero a que termine
CloseHandle(ProcessInfo.hThread); // Cierro el hilo
CloseHandle(ProcessInfo.hProcess); // Cierro el proceso
//ValorProceso = system(argumentos.data());
LeerShell();
La funcion LeerShell no la muestro porque lo que no llega a ejecutar el .bat
GRACIAS Y UN SALUDO
// Inicializo la estructura STARTUPINFO
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof StartupInfo;
StartupInfo.dwFlags |= STARTF_USESTDHANDLES;
StartupInfo.hStdOutput = hChildStdoutWr;
StartupInfo.hStdInput = hChildStdinRd;
StartupInfo.hStdError = hChildStdoutWr;
//EJECUCION DE CMNPROJ
//**************************************************************************//
ValorProceso= CreateProcess("ant.bat",
parametros,
NULL,
NULL,
TRUE,
0,
NULL,
NULL,
&StartupInfo,
&ProcessInfo);
WaitForSingleObject(ProcessInfo.hProcess, INFINITE); // Espero a que termine
CloseHandle(ProcessInfo.hThread); // Cierro el hilo
CloseHandle(ProcessInfo.hProcess); // Cierro el proceso
//ValorProceso = system(argumentos.data());
LeerShell();
La funcion LeerShell no la muestro porque lo que no llega a ejecutar el .bat
GRACIAS Y UN SALUDO
Valora esta pregunta


0