Título: Problema con dll's Publicado por: Thaorius en 27 Septiembre 2005, 03:30 am Bueno, les queria preguntar como puedo hacer para cargar una dll echa en vb mediante codigo.
Lo nesecito para esto: Un programa de administracio nde bases de datos con modulos. Osea, que permite supongamos un modulo para una base de datos de inmobiliaria, otro para no se, una farmacia, etc. Todo esto con un comando en el accesos directo, supongamos -module farmacia,etc. La cosa es que el programa carga de un archivo ini los datos del modulo, como el nombre de la dll de ste y la carga para posteriormente ejecutar sus funciones. EL problema es que no se como hacer para cargar la dll desde vb. Si es una dll de c++ la cargo como una pai pero no se para las de vb. Saludos y espero me ayudarme. Título: Re: Problema con dll's Publicado por: Slasher-K en 27 Septiembre 2005, 04:49 am Con la función GetObject podés crear dinánimacamente objetos desde un archivo.
Código: Dim oObject As Object También se pueden crear documentos de Word o Excel o cualquier archivo preparado para automatización. Saludos. Título: Re: Problema con dll's Publicado por: Thaorius en 27 Septiembre 2005, 05:21 am Bueno, probe con este codigo:
Código: Private Sub Form_Load() Pero me dice que ActiveX no puede crear el objeto. La funcion de la dll que quiero usar es CriticalError. Eh de supoenr que tengo que crear un objeto dentro de la dll para usarlo y que ErrorReporter debe ser una clase, como dice msdn pero sinceramente no tengo idea de como hacerlo. Ahora busco en google, pero si sabes(seguro que si(xD)) por favor postealo. Saludos Título: Re: Problema con dll's Publicado por: Slasher-K en 27 Septiembre 2005, 05:29 am Proyecto->Agregar módulo de clase
Al módulo de clase lo llamas ErrorReporter. Dentro del módulo sopongamos que escribis la función CriticalError. Entonces compilas la DLL y para llamar a la función usás el siguiente código: Código: Private Sub Form_Load() Y así debe funcionar, el error que se produjo fue porque el módulo de clase no existía o su propiedad Instancing no estaba establecida a 5-MultiUse. Saludos. Título: Re: Problema con dll's Publicado por: Thaorius en 27 Septiembre 2005, 05:40 am Las 2 cosas, estaba en GlobalMultiuse ::) :P
Sigue sin andar :( :( :(... El codigo que tengo es este: Código: Private Sub Form_Load() Y la dll esto: Código: Public Sub CriticalError() Su instancing esta a 5-Multiuse y la dll esta en c:\ y la clase se llama clsErrorReporter. Que puede ser? Saludos Título: Re: Problema con dll's Publicado por: Slasher-K en 27 Septiembre 2005, 05:54 am Bueno veo que con GetObject no funciona :-\, pero debería. Modifiqué el código usando CreateObject para que cree el objeto desde el registro.
Por si no está registrada primero usa el programa REGSVR32 que se utiliza para registrar componentes ActiveX y está en todas las máquinas con Windows 95 o superior. Código: Private Sub Form_Load() La nomenclatura siempre es la misma para las clases en el registro: Citar NombreDll.NombreObjeto Saludos. Título: Re: Problema con dll's Publicado por: Thaorius en 27 Septiembre 2005, 06:04 am :( :( :(... definitavamente no es mi dia de suerte.
No anda tampoco, y tira el mismo error :(. ¿que sera? Saludos Título: Re: Problema con dll's Publicado por: Slasher-K en 27 Septiembre 2005, 06:08 am A mi me funciona bien. Pero a ver vamos por paso:
1. Creas proyecto DLL ActiveX con un módulo de clase llamado clsErrorReporter. 2. Al proyecto lo llamas Error. No el nombre del archivo sino del proyecto, porque ese es el nombre con el que lo registra. 3. Propiedad Instancing de la clase a Multiuse, creas el procedimiento. 4. Compilas y ejecutas el código desde el otro programa en el evento Load del formulario. Verifica lo del nombre del proyecto, es muy probable que sea eso. Saludos. Título: Re: Problema con dll's Publicado por: Thaorius en 27 Septiembre 2005, 06:13 am Era el nombre del proyecto. Que era ErrorReporter y no error.
Errores tontos. Bueno, estoy contento porue ya anda. ;D ;D ;D Ahora me agarro los tutos de leer ficheros ini del guille y a aseguir programando. Saludos y gracias. |