Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Fucko en 25 Febrero 2021, 06:21 am



Título: Usar dll de .net en vb6, intenté regasm y no queda del todo
Publicado por: Fucko en 25 Febrero 2021, 06:21 am
Hola, tengo unas dll en .net algunas framework 2.x y otras 4.x

el asunto es, que hasta ahora, la 2.x quedó con el regasm, sin, problemas, he creado la tlb y al estar en el explorador de objetos, aparece la dll con sus clases.

no me pasa con la que está hecha en 4.7.2

se que el regasm es otro para hacerlo, no hay problemas por eso, la tlb la pude crear, pero me aparece vaciom sin clases....

que puede ser?

pongamos como ejemplo:

Código:
Private Sub cmd_leer_Click()
    dll2x.leer
End Sub

comando usado para 2x

Código:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe /tlb:dll2x.tlb dll2x.dll

para 4x
Código:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /tlb:dll4x.tlb dll4x.dll

mientras voy codificando, al poner dll2x y poner el "." ya me aparece lo que necesito, por ejemplo "leer"

pero al hacer en la de 4.x nada....

no aparece nada de nada....

que puede ser?
gracias


Título: Re: Usar dll de .net en vb6, intenté regasm y no queda del todo
Publicado por: Fucko en 8 Marzo 2021, 19:36 pm
A nadie le ha pasado? :P
no puedo hacer funcionar las dll .net en el vb6



Título: Re: Usar dll de .net en vb6, intenté regasm y no queda del todo
Publicado por: Fucko en 30 Abril 2021, 00:46 am
Es imposible usar las dll .net en vb6?

he visto gente que las ha usado, pero no tengo idea como....


Título: Re: Usar dll de .net en vb6, intenté regasm y no queda del todo
Publicado por: Danielㅤ en 30 Abril 2021, 01:05 am
Hola, probablemente ésto te pueda ayudar, lee todo con atención:

https://www.jasoft.org/Blog/post/como-exponer-una-dll-de-net-para-usarla-con-visual-basic-vbscript-y-asp-clasico

https://devattitude.wordpress.com/2014/03/23/creando-una-dll-en-net-para-visual-basic-6/

http://davidcruz127.blogspot.com/2013/07/usar-dll-creada-en-net-en-visual-basic-6.html

https://social.msdn.microsoft.com/Forums/es-ES/c0e7aebc-bd98-4272-95a8-63cba96a9def/c-llamar-a-dll-vb6-com-desde-net?forum=vcses

https://microsoft.public.es.dotnet.vb.narkive.com/cbW3jPSm/utilizar-dll-de-vb-net-en-vb6


Saludos


Título: Re: Usar dll de .net en vb6, intenté regasm y no queda del todo
Publicado por: Serapis en 30 Abril 2021, 02:15 am
Claro que las puedes usar... pero no directamente, porque la convención de llamada s de NET es distinta de la convención de llamadas de vb6.

...tienes que crear un wrapper de las funciones que requieres...
1- Debe ser una proyecto de biblioteca de clases.
2 - al añadir el proyecto, ve a a las propiedades del mismo (doble click en 'myproject' en el explorador de soluciones).
3 - Ve a la pestaña 'Aplicación, pulsa el botón información de ensamblado... debajo del GUID, activa la casilla 'Crear ensamblado visible a través de COM'.
4 - En la ficha 'compilar', abajo dle todo, activa la caislla: Registras para interoperabilidad COM'.
5 - Elimina las clases que tenga el proyecto y añade una nueva clase, pero de tipo 'COM Class', esto generará los GUID, para que pueda ser accedido por VB6... (mira la imagen que adjunto). Es decir, vb6 solo verá la funcionalidad de estas clases, puedes tener otras clases si las necesitas, pero serán de NET al 100, y por supuesto puedes usarlas desde esa 'COM Class'... peor para vb6 serán invisibles e inaccesibles. La funcionalidad que quieras acceder tendrá que estar disponible en las 'COM Class' del proyecto.

No puedes usar todo lo que quieras... en las funciones publicas, en las funciones privadas, puedes usar parámetros de NET...
Estos es, los GUID y la clase NEW sin parámetros.
Los constructores con parámetros, son ignorados y las funciones sobrecargadas son renombradas con sufijos numerados. Por ejemplo: Sean 2 funciones llamadas FunX(byval Y as string) y FunX(byval Y as byte)
La 1ª se sigue llamando igual "FunX", la 2ª se renombra como: "FunX_1", es decir esto es lo que se verá por ejemplo desde VB6.0
Así al compilar permite que puedan ser reconocidos por otras plataformas que usan COM.
Explicar cada vericueto es largo y lleva bastante tiempo, lo mejor es que explores por tí mismo...
Una vez que termines el wrapper, compila tu clase/s... y tendrás que registrarla como una clase de NET, pero gracias a los GUID, VB6 ya podrá 'verla' y usarla.

Los errores que cometas en parámetros a llamadas, supondrá volver al código en NET, solucionar el problema, volver a compilar y registrar... y volver a instanciar desde vb6.

(https://i.imgur.com/MdiDsDO.png)