Ajouter une réferance à une dll en cours d'execution

Résolu
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 27 oct. 2004 à 20:02
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 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 ;)

6 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
29 oct. 2004 à 20:23
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
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
27 oct. 2004 à 20:52
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
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
27 oct. 2004 à 20:53
Salut
Je crois qu'il faut voir du côté des APIs LoadLibrary ou LoadLibraryEx (de mémoire) mais g pas testé.

Cordialement, CanisLupus
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
29 oct. 2004 à 19:02
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 ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
30 oct. 2004 à 17:41
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 ;)
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
30 oct. 2004 à 17:43
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 ;)
0
Rejoignez-nous