Autor Tema: Cargar DLL o TLB en memoria y usarlo (sin referenciarlo)  (Leído 3431 veces)

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

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Cargar DLL o TLB en memoria y usarlo (sin referenciarlo)
« en: Marzo 25, 2015, 01:21:51 pm »
Hola, pues como dice el titulo, quisiera saber como hacer para usar una dll en memoria, estando la dll en la misma carpeta de la aplicacion.

creo que ya he visto como hacerlo embebiendo la dll en un recurso, pero tampoco quiero hacer eso...

creo que ya he visto un ejemplo aca hace años de como hacer eso(digo "años" o sea que ya me olvide de donde estaba)...o he visto algun programa aca de leandro o cobein que usa tipo "plugin" al vuelo y carga la dll en memoria y la usa.

creo tambien que habia un ejemplo que lo hacia con un OCX...

estoy usando una dll que hice en .NET y la uso perfecto desde VB6, (en realidad agrego como referencia el TLB).  8)

gracias y saludos.

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Cargar DLL o TLB en memoria y usarlo (sin referenciarlo)
« Respuesta #1 en: Marzo 25, 2015, 01:45:51 pm »
Usa LoadLibrary y el método callinterface de este código si sabes el ordinal, y si no sabes el ordinal de la función lo podes tener con GetProcAddress

Siempre y cuando la DLL sea exportada como COM, si no ni idea :P

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:Cargar DLL o TLB en memoria y usarlo (sin referenciarlo)
« Respuesta #2 en: Marzo 28, 2015, 07:54:25 pm »
Basicamente deberias cargar la dll en la posicion en memoria que está definida en su header. Si es reallocable, habria que ver donde ponerla para que no se pise con nada mas. Luego, cargar las referencias de la misma (todo esto lo sacas del header), y poner en el mismo las direcciones de las referencias.
No creo que sea una buena idea hacerlo asi, ni tampoco le veo la gracia.
Si realmente lo necesitas, busca otra forma, por ejemplo hacer un Virtual File System (como hacen los generadores de apps portables), engañando al sistema de que realmente existe tal DLL y cuando la abra, redireccionar el puntero a otro lado. Yo hice algo de esto, pero no probe con DLLs. Esto lo podes hacer hookeando las apis correspondientes usadas por el sistema (chequea el Api Monitor para ver que hace el sistema cuando cargas una DLL)
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion