Ajouter une réferance à une dll en cours d'execution [Résolu]

Signaler
Messages postés
2083
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2020
-
Messages postés
2083
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2020
-
Salut !
Est-ce que c'est possible de faire référence dans un projet à une dll dont on ne connais le nom qu'en cours d'execution ?

L'idé est de faire un systeme de plug-ins : au lancement du prog, parcour d'un dossier à la recherche de toutes les dll (ecrite en C++) et appel de fonctions dans chacune d'elles.

Il me semble qu'il faut créer un processus qui charge la Dll, mais je ne vois pas comment...

Merci

;) Flachy Joe ;)

6 réponses

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
2 adresses :

http://www.mentalis.org/apilist/LoadLibrary.shtml

et

http://www.mentalis.org/apilist/LoadLibraryEx.shtml

Si ça peut t'aider...

Bonne prog

Cordialement, CanisLupus
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Oui c'est possible avec le late-bound, mais cependant, cela reste très lent.

Pour ce faire, utilise la fonction VB CreateObject, par exemple, pour appeler la classe "CTest" de la dll "Test.dll", il faut écrire :

Dim oObjet As Object
Set oObjet CreateObject("Test.CTest") si ma mémoire est bonne, cela n'est valable que pour les dll ActiveX> qui doivent être enregistrée dans le registre de Windows !
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Salut
Je crois qu'il faut voir du côté des APIs LoadLibrary ou LoadLibraryEx (de mémoire) mais g pas testé.

Cordialement, CanisLupus
Messages postés
2083
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2020
1
Merci les gars.

En fait je ne veux pas utiliser de classe ActiveX, juste des fonctions...
Il me semble que Loadlibrary ne fait que charger la dll en mémoire, comment appeller les fonctions ?

;) Flachy Joe ;)
Messages postés
2083
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2020
1
Ok, nickel, il me fallait juste l'API CallWindowProc

<s>from AllAPI.net (http://www.mentalis.org/apilist/LoadLibrary.shtml) :</s>

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Private Sub Form_Load()
    On Error Resume Next
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'We're going to call an API-function, without declaring it!
    Dim lb As Long, pa As Long
    'map 'user32' into the address space of the calling process.
    lb = LoadLibrary("user32")
    'retrieve the address of 'SetWindowTextA'
    pa = GetProcAddress(lb, "SetWindowTextA")
    'Call the SetWindowTextA-function
    CallWindowProc pa, Me.hWnd, "Hello !", ByVal 0&, ByVal 0&
    'unmap the library's address
    FreeLibrary lb
End Sub


;) Flachy Joe ;)
Messages postés
2083
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2020
1
Merdeuuh, ce sale truc m'a barré l'adresse au lieu de la souligner :

from AllAPI.net (http://www.mentalis.org/apilist/LoadLibrary.shtml)

Et merci a AllAPI aussi...

;) Flachy Joe ;)