Abrir y cerrar otro programa desde mi aplicación c++

Iniciado por FMLTGRD, 17 Noviembre 2014, 08:23 AM

0 Miembros y 1 Visitante están viendo este tema.

FMLTGRD

Buenas noches,
Tengo un problema y quería ver si alguien tenia alguna idea para solucionarlo.
Trato de hacer un programa en C++ que lance otro archivo ejecutable y que tambien sea capaz de cerrarlo. He buscado en internet pero no he encontrado nada que me funcione.
Les agradezco de antemano y espero que puedan ayudarme.




Perdon, se me olvido especificar que mi aplicacion debe correr en Windows.


_Enko

Hola, puedes enviar un mensaje mediante SendMessage WM_CLOSE

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632617(v=vs.85).aspx

Seria como el evento de apretar ALT+F4 en la aplicación o hacer click en la X.

Para abrir una aplicación, me imagino que WinExec debería funcionar.


FMLTGRD

Muchas gracias por la ayuda, voy a ponerlos en practica si hay un problema les aviso va?

daryo

#4
Cita de: _Enko en 17 Noviembre 2014, 16:55 PM
Hola, puedes enviar un mensaje mediante SendMessage WM_CLOSE

no se.. eso no serviria si es un programa como notepad que pide confirmacion para cerrarse cuando hay cambios o si es un programa de consola.

tambien podrias usar. TerminateProcess
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714%28v=vs.85%29.aspx

para abrir un programa puedes usar winexec o shellexecute
http://msdn.microsoft.com/en-us/library/ms687393.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx

ya depende de que quieras hacer.
buenas

FMLTGRD

Bueno antes que nada gracias nuevamente,
Las soluciones parecen funcionar bien. El único problema es que sgun la documentacion los programas en consola no responden a este mensaje.
Por el momento me sirve bien, pero si alguien tiene alguna forma de tambien cerrar aplicaciones de consola tambien se lo agradecería.

daryo

buenas

FMLTGRD

Me interesa muchisimo esto de terminateprocess y parece que si va funcionar. Ahora solo me queda una duda. Como le indico a la computadora el proceso indicado que debe de terminar.

daryo

#8
Cita de: FMLTGRD en 17 Noviembre 2014, 23:28 PM
Me interesa muchisimo esto de terminateprocess y parece que si va funcionar. Ahora solo me queda una duda. Como le indico a la computadora el proceso indicado que debe de terminar.


el handle(identificador) que le das como argumento es el del proceso que quieres cerrar :P hay varias formas de obtener ese handle con el nombre el titulo de la ventana con el nombre del proceso .


googleando xD: http://stackoverflow.com/questions/2443738/c-terminateprocess-function
buenas

FMLTGRD

Ya casi lo logro, pero mi problema es cuando llamo a la funcion OpenProcess el ultimo parametro es el id del Proceso, pero no se como obtener el id del proceso exacto.