Control propio y de subprocesos

Iniciado por llamamecomoquieras, 2 Diciembre 2008, 21:07 PM

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

llamamecomoquieras

Buenas,

Me estoy haciendo un programa que, entre otras cosas, ejecuta otra aplicación en concreto. Me gustaria crear una especie de "dependencia", de forma que si se cerrase mi programa (de cualquier manera, ctrl+alt+sup, etc.), automaticamente los hijos desaparecieran con él. Tenia pensado matarlos al llamarse form_unload, pero si me matan el proceso, esta subrutina no se ejecutaria. Tal vez con memoria compartida, mutex.. o lo que sea, se podria hacer de forma mas segura.

En fin, alguna idea pululando por vuestras mentes?

Saludos!

illuminat3d

Facil.

Vas al code de tu programa y añades :

CitarPrivate Sub Form_Unload(Cancel As Integer)
' Aqui lo que quieras hacer cuando el programa se cerrase..
End Sub

Saludos! :D

Editado : Acabo de leer de nuevo tu mensaje, la primera ves no lo entendi muy bien pero ahora veo que ya probastes con el :

Private Sub Form_Unload(Cancel As Integer)

End Sub

pero es raro que no te funcione..

Karcrack

#2
Lo que has de hacer (Si no recuerdo mal) para evitar el cierre es poner:

Código (vb) [Seleccionar]
Private Sub Form_Unload(Cancel As Integer)
Cancel = 1 'Aqui cancelamos el cierre...
End Sub





Para comunicarse entre aplicaciones (IPC):
http://en.wikipedia.org/wiki/Interprocess_communication
http://es.wikipedia.org/wiki/Comunicaci%C3%B3n_entre_procesos

Grax Hendrix :P




CitarAdvertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

No gracias :xD

Saludos :D

& eDu &

Podrías crear una conexión con los programas "hijos" y que si se cierra ese que se envie una información a los "hijos" diciendo que se cierren.

XcryptOR

si podrias utilizar mutex, cuando tu aplicación sea cerrada de improvisto por ejemplo mediante el taskmanager, tus procesos hijos vigilen constantemente mediante un timer o bucle  si el mutex padre fue cerrado si es asi, que se cierre cada uno. creo que es con una propiedad o metodo si mal no estoy es SYNCRHONIZE del mutex




llamamecomoquieras

Si, form_unload está mas que probado.
Por desgracia, cerrando mi programa con ctrol+alt+sup, form_unload no pinta nada, y se me cierra en seco. Bueno, otro truco seria ocultarlo del taskmanager, pero no parece muy elegante xD

XcryptOR

tienes la solucion si quieres utilizarla haya tu



llamamecomoquieras

Cita de: XcryptOR en  3 Diciembre 2008, 13:55 PM
tienes la solucion si quieres utilizarla haya tu

Sí, ya la vi, el inconveniente es que los subprocesos no los he programado yo  :xD

seba123neo

Hola, el evento Query_Unload tiene diferentes valores de UnloadMode , ahi tenes si lo cerras desde el administrador o de otro lado...
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

llamamecomoquieras

Nadita de nadita. Ni una ni la otra. Al cerrarlo con el taskmanager, hace catapúm y nada más. Se me ocurre tambien el interceptar la syscall, pero me parece que ese tipo en concreto no era programable. Otra idea seria ejecutar la segunda aplicación como un thread, de manera que cerrar el mío comportaria que el resto tambien lo hiciera. Pero no se si es posible.