SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: neo644 en Lunes 21 de Abril de 2003, 01:58
-
yo tengo un programa A, y desde ese lanzo un programa B.
como haria, desde el programa A para detectar cuando se cierra el programa B?
-
hola, tal vez haya otra forma de hacer, pero esta es la unica que conozco:
a travez de sockets o a traves de rpc.
a travez de socket, para indows busca la libreria winsock.. es sencillo una vez hayas a prendido a manejarlos.
en linux con libsocket.
si quieres manejar rpc, enm linux es sencillisimo ya que te genera todo el codigo con el comando rpcgen , y solo lo modigficas para tu aplicacion, en windows no lo he manejado.
Sinceramente , sea cual sea la manera que encuentres de hacerlo, no es para principiantes, es más bien para un nivel intermedio.
una trampita puede ser decirle al programa que antes de acabar, cree un archivo, de tal manera que el programa de origen verifique ciclicamente que el archivo exista, si existe lo borra y ya sabe que el otro programa se cerro.
Es una trampita un poco vil.
:P
JuanK
-
lo del archivo lo pense, pero no seria muy prolijo ke digamos, ademas se ke hay otra manera de hacerlo
y lo ke me dijiste no sirve, ya ke el programa B no esta echo por mi, es decir, puede ser un programa como internet explorer, icq, word, etc. por ende toda la verificacion debe realizarse desde el programa A
un ejemplo es el Speed Up, el programita que viene con el KaZaA Lite.
por si no sabes lo ke hace, cuando abris el kazaa, aparte abrir este programa speed up, y este interfiere en el proceso del kazaa y te va buscando mas recursos para tu download.
-
lo de los sockets.. si funciona...!!! pero no aplica en tu caso.
opcion nro 3:
elabora un modulo que revise los procesos del sistema ..por ejemplo si word esta activo habria un proceso winword.exe...que desaparece al cerrar word, para hacer esto seguramente que tendras que usar el api de windows.
otra opcion más:
tambien a travez del api...debes indagar acerca de las señalaes que emite un proceso al cerrarce, y a travez de las funciones de la api capturar estas señales cuando sean emitidas.
Suerte.
-
en otro foro me dijeron ke use
la funcion CreateProcess(). se puede lanzar un proceso nuevo y devuelve una estructura ke tiene un handle al nuevo proceso, depue usas WaitForSingleObject() con el parametro ke devolvio CreateProcess() y te fijas regularmente a ver cuando se cierra, ya ke al cerrarse el programa envia una senial.. pero
me tuve fijando como usar las funciones pero no me funcionan.. hize un programita ke lanza al otro con CreateProcess pero me da un error de access violation...