Programación General > C++ Builder

 Llamada A Createprocess

(1/4) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa