elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Problema con dll's
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con dll's  (Leído 1,481 veces)
Thaorius


Desconectado Desconectado

Mensajes: 1.073


Ver Perfil WWW
Problema con dll's
« 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.


En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Problema con dll's
« Respuesta #1 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

  Set oObject = GetObject("C:\MyLibreria.dll", "Class1")

También se pueden crear documentos de Word o Excel o cualquier archivo preparado para automatización.

Saludos.


En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Thaorius


Desconectado Desconectado

Mensajes: 1.073


Ver Perfil WWW
Re: Problema con dll's
« Respuesta #2 en: 27 Septiembre 2005, 05:21 am »

Bueno, probe con este codigo:
Código:
Private Sub Form_Load()
Dim ErrorDll As Object
Set ErrorDll = GetObject("c:\error.dll", "ErrorReporter")
ErrorDll.CriticalError
End Sub

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
En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Problema con dll's
« Respuesta #3 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()
        Dim oErrorDll As Object

  Set oErrorDll = GetObject("c:\error.dll", "ErrorReporter")

  Call oErrorDll.CriticalError
End Sub

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.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Thaorius


Desconectado Desconectado

Mensajes: 1.073


Ver Perfil WWW
Re: Problema con dll's
« Respuesta #4 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()
Dim oErrorDll As Object
Set oErrorDll = GetObject("c:\error.dll", "clsErrorReporter")
Call oErrorDll.CriticalError
End Sub

Y la dll esto:
Código:
Public Sub CriticalError()
MsgBox "DB Admin produjo un error crítico en el sistema y debe cerrarse.", vbCritical, "Error"
End Sub

Su instancing esta a 5-Multiuse y la dll esta en c:\ y la clase se llama clsErrorReporter.

Que puede ser?

Saludos
En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Problema con dll's
« Respuesta #5 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()
        Dim oErrorDll As Object
 
  Call Shell("regsvr32.exe /s C:\error.dll")
 
  Set oErrorDll = CreateObject("Error.clsErrorReporter")
 
  Call oErrorDll.CriticalError
End Sub

La nomenclatura siempre es la misma para las clases en el registro:

Citar
NombreDll.NombreObjeto

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Thaorius


Desconectado Desconectado

Mensajes: 1.073


Ver Perfil WWW
Re: Problema con dll's
« Respuesta #6 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
En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Problema con dll's
« Respuesta #7 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.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Thaorius


Desconectado Desconectado

Mensajes: 1.073


Ver Perfil WWW
Re: Problema con dll's
« Respuesta #8 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.
En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines