Programación General > C++ Builder
Llamada A Createprocess
desire:
Hola, esoy haciendo la siguiente llamada :
if(CreateProcess(NULL,ruta.c_str(),NULL,NULL,0,0,NULL,NULL,&StartInfo,&ProcessInfo)!=0)
donde la variable contiene el path donde se encuentra el programa ejecutable que
quiero llamar. Lo que me ocurre es que no se ejecuta el codigo del if y me da error
numero 998.
Espero que alguien me ayude.
Muchas gracias.
Eternal Idol:
¿Viste el ejemplo de la MSDN? http://msdn2.microsoft.com/en-us/library/ms682512.aspx
StartInfo debe tener todos sus campos a 0 excepto cb que tiene que ser igual a sizeof(STARTUPINFO). ProcessInfo tambien debe tener todos sus campos a 0.
desire:
Los tenia todos los campos puestos como tu me has comentado menos los de processinfo. Lo he pueso y no me ha dado ningun error pero de todas maneras me
sigue ocurriendo el problema de que no espera que se termine el ejecutable que llamo para continuar con el resto de codigo que tengo.
Lo he vuelto a lanzar de nuevo y ahora me vuelve a salir el error 998, no lo entiendo. ¿Da el error cuando quiere? ;)
StartInfo.cb = sizeof(StartInfo);
StartInfo.lpReserved = NULL;
StartInfo.lpReserved2 = NULL;
StartInfo.cbReserved2 = 0;
StartInfo.lpDesktop = NULL;
StartInfo.dwFlags = 0;
ProcessInfo.hProcess= NULL;
ProcessInfo.hThread =NULL;
ProcessInfo.dwProcessId = 0;
ProcessInfo.dwThreadId =0;
AnsiString ruta;
ruta = "C:\\InstalacionCovapaFinal\\InstalacionNueva\\APA\\650MB\\DISK1\\Setup.exe";
if(CreateProcess(ruta.c_str(),NULL,NULL,NULL,false,0,NULL,NULL,&StartInfo,&ProcessInfo)!=0)
{
Fin = false;
while(false)
{
switch ( WaitForSingleObject(ProcessInfo.hProcess,INFINITE))
{
WAIT_OBJET_0 : Fin = true;
// WAIT_TIMEOUT : kk = 0;
}
}//fin del while
CreaDatosTablas();
CambiaConfiguracionRegional();
Session->SaveConfigFile();
ModificarRegistro();
}//fin de si la aplicacion se ha lanzado sin problemas
else
{
ShowMessage(GetLastError());
}
Espero solucionarlo, Gracias
Eternal Idol:
--- Cita de: "desire" --- Lo he pueso y no me ha dado ningun error pero de todas maneras me sigue ocurriendo el problema de que no espera que se termine el ejecutable que llamo para continuar con el resto de codigo que tengo.
--- Fin de la cita ---
Nunca va a esperar ya que tenes un while(false) ... false es 0, entonces no entra jamas al bucle, no hace falta ningun bucle asi que lo mejor es que lo borres directamente.
Tambien fijate el switch ... no usas case y entonces toma eso (donde no escribiste OBJECT sino OBJET como una etiqueta).
desire:
Hola, lo he dejado como tu me has dicho pero ahora me sigue saliendo lo del error
998.
He buscado a que hace referencia dicho error pero no he encontrado nada al respecto.
Gracias
Navegación
[#] Página Siguiente
Ir a la versión completa