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

Messages postés
2116
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2018
- - Dernière réponse : Flachy Joe
Messages postés
2116
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2018
- 30 oct. 2004 à 17:43
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 ;)
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
4
3
Merci
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

Dire « Merci » 3

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

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

Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
73
0
Merci
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
3758
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
4
0
Merci
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
2116
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2018
1
0
Merci
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
2116
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2018
1
0
Merci
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
2116
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2018
1
0
Merci
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 ;)