Programación General => C/C++ => Mensaje iniciado por: vane_arg en Sábado 25 de Noviembre de 2006, 03:49
Título: Llamar A Otro Programa Sin Que Se Vea En Pantalla?
Publicado por: vane_arg en Sábado 25 de Noviembre de 2006, 03:49
Ahora ejecuto otros programas con la funcion spawnl, pero aparece la ventana de ms-dos con el programa hasta que termina y se cierra, pero yo quisiera que ese programa que llamo no se vea. El programa que estoy haciendo constantemente tiene que llamar a otro y cuando éste termina lo vuelve a llamar con un parámetro distinto, por lo que aparecen y desaparecen ventanas de ms-dos contínuamente y queda bastante feo, por eso quisiera que se ejecuten pero sin verse, como los programas residentes en memoria, por ejemplo. Uso el borland c++ 6, desde ya gracias..
Título: Re: Llamar A Otro Programa Sin Que Se Vea En Pantalla?
Publicado por: dBase3 en Sábado 25 de Noviembre de 2006, 05:01
seguro que en C hay maneras más faciles de hacerlo pero por darte la manera como lo hago yo es con el siguiente código en una linea:[/size]
Código: Text
if $CmdLine[0]=1 then Run($CmdLine[1] , "", @SW_HIDE)
Citar
$CmdLine[0] es el número de parámetros y $CmdLine[1] el primer parámetro del arrancador, y @SW_HIDE te esconde los pantallazos
Al compilar generas un exe q "miArrancador.exe", y ahora se te esconden esos pantallazos.
Tienes que cambiar la linea donde llamas a tus programas por la siguiente linea:
Citar
miArrancador.exe "NOTEPAD.EXE miFichero.txt"
El compilador aquí en Downloads (cuesta 0$, claro, aunq no cueste nada no hay q desmerecer su potencia si no lo conoces mira el link):
Link a Autoit en Español (http://www.autoit.es)
Si los programas tienen parámetros pones comillas para identificar que va todo junto
:alien: Edit: por si no lo puedes hacer en c: espere a que termine el programa que llamo antes de seguir con la próxima instrucción: cambias RUN POR RUNWAIT y el resto es igual[/size]
Título: Re: Llamar A Otro Programa Sin Que Se Vea En Pantalla?
Publicado por: Eternal Idol en Sábado 25 de Noviembre de 2006, 10:00
dBase3: Te recuerdo que este es el foro de C/C++ y no el de cualquier herramienta que se nos ocurra y no conozca nadie. Esa funcion Run no la podemos usar en C/C++ y la constante es en todos los lenguajes NORMALES SW_HIDE.
Título: Re: Llamar A Otro Programa Sin Que Se Vea En Pantalla?
Publicado por: vane_arg en Miércoles 29 de Noviembre de 2006, 05:38
Muchas gracias.. lo hice con ShellExecute y la aplicación se ejecuta sin verse, pero ahora tengo un nuevo problema.. hacer que el primer programa espere a que termine el programa que llamo con shellexecute antes de seguir con la próxima instrucción. Por eso yo había usado en primer lugar la función spanl, que me permite esperar a que la otra aplicación termine, pero no evitar que se vea. Y con shellexecute logro ésto último pero no lo de esperar.. Bueno, si alguien tiene alguna solución se lo agradecería, y perdón si la estoy haciendo muy pesada la cosa..
Título: Re: Llamar A Otro Programa Sin Que Se Vea En Pantalla?
Publicado por: Eternal Idol en Miércoles 29 de Noviembre de 2006, 08:17
De nada; CreateProcess te devuelve un handle al proceso sobre el cual podes hacer un WaitForSingleObject y tambien podes probar con ShellExecuteEx que tiene un campo del mismo tipo en la estructua que usa.