![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Evitar cerrar formulario principal si hay librerías cargadas dinámicamente
Tengo un formulario contenedor (MDI) en el cuál cargo una librería externa de la siguiente manera:
En el archivo .dll tengo lo siguiente:
Con esto puedo cargar el DLL sin ningún problema y me lo muestra como hijo (MDIChild) de mi formulario principal (MDI). Pero en mi formulario principal (MDI), la variable MDIChildCount siempre me da 0. Aún y cuando yo veo que está el formulario de la DLL creado como hijo (Mdichild). ¿cómo puedo hacer que mi DLL se considere en el formulario principal? Es decir, ¿como puedo hacer que MDIChilCount realmente me cuente mi DLL? Lo que al final quiero lograr, es evitar que se cierre el formulario principal (MDI) si existen DLL cargadas:
Y aprovechando, ¿como puedo hacer para cargar una DLL solo una vez? P.D. Se me olvidó cuál era la correcta definición de una DLL: ¿librería o biblioteca?
__________________
Última edición por ContraVeneno fecha: 01-07-2008 a las 22:06:04. |
#2
|
||||
|
||||
MAIN;
DLLs;
Básicamente el proceso/aplicación principal crea un espacio de memoria compartida en el que residirá nuestro contador, así mismo las DLLs acceden a dicho contador y lo incrementan en uno cuando el formulario que contiene dicha librería es creado. Al momento de ser destruido el formulario NO es liberada la librería del proceso que la ha cargado anteriormente, sin embargo en este caso tan particular su razón de existir termina y decrementamos el contador en uno. Obviamente al intentar cerrar el formulario principal revisará si dicho contador esta en 0, en caso contrario significa que algún formulario no ha sido cerrado, y por ende no es "aconsejable" cerrarlo. Espero te sea de utilidad. Saludos Última edición por cHackAll fecha: 01-07-2008 a las 23:13:57. Razón: F7 |
#3
|
||||
|
||||
Bueno, con respecto al título del hilo;
PD; pues lo pongo porque me he aburrido un poquito ![]() Saludos |
#4
|
||||
|
||||
Cita:
Muy interesante propuesta, el problema que tengo es que no se como detectar cuando se ha cerrado un dll. O mas bien, no se en que punto colocar el FreeLibrary.
__________________
|
#6
|
||||
|
||||
Cierto, se me olvidó comentar que la primer propuesta que haces, funciona a la perfección.
![]()
__________________
|
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Evitar cerrar un formulario desde un componente | genius | Varios | 1 | 23-11-2006 15:55:42 |
Cerrar dos formularios creados dinamicamente (al mismo tiempo) | ctronx | Varios | 7 | 02-09-2004 00:19:04 |
cerrar formularios creados dinamicamente | ctronx | Varios | 5 | 17-06-2004 18:25:17 |
evento de cerrar la ventana principal | ronson | Varios | 1 | 25-02-2004 13:03:06 |
Debugear Dll cargadas dinámicamente | Aldo | Varios | 2 | 13-01-2004 09:50:56 |
![]() |
|