Charger un dll depuis une ressource [Résolu]

Signaler
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
Bonjour tout le monde,

Je me pose une question dont je n'ai évidemment pas la réponse.
D'ailleur, je me demande même si c'est possible.

Peut t'on charger une dll depuis une ressource ?

Je m'explique.
J'aimerais utiliser des fonctionnalités d'une dll mais je ne veut pas avoir à la distribuer avec mon exécutable.
Mon idée première était de mettre la dll dans le ressources de mon exe.
Au lancement de l'exe, je récupère la ressource, je la créée dans le dossier temporaire puis je la charge avec LoadLibrary.
Ca fonctionne.

Mais, ce que j'aimerais faire, c'est me passer de la copie dans le dossier temporaire et pouvoir charger la dll depuis la mémoire.
Est-ce possible ?

J'ai fouillé dans MSDN mais LoadLibrary ne semble pas pouvoir faire cela.
Bref, je sèche donc je suis preneur de toute idée qui pourrait faire avancer mon problème.

Merci d'avance.

5 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Eh oui je viens de regarder et en fait je crois que c'est la solution a ton problème puisque cet article décrit comment charger une DLL sans qu'elle soit rpésente sous forme de fichier. J'avais juste lu la phrase que j'ai citée sans regarder le reste
Il y a même un code tout écrit avec ces trois fonctions:
HMEMORYMODULE MemoryLoadLibrary(const void *);
FARPROC MemoryGetProcAddress(HMEMORYMODULE, const char *);
void MemoryFreeLibrary(HMEMORYMODULE);

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Je sais pas si c'est possible, mais ca m'intéreserait aussi.
J'ai trouvé une réponse ici (ce serait impossible), mais méfions nous c'est pas forcément vrai...
"The default windows API functions to load external libraries into a program
(LoadLibrary, LoadLibraryEx) only work with files on the filesystem.  It's
therefore impossible to load a DLL from memory."

Il y a peut être un moyen sans LoadLibrary

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007

Merci vecchio56 pour ta réponse.

Je vais jeter un oeil à ton lien qui 'a l'air intéressant.
Je vais continuer à chercher de mon côté, mais si quelqu'un à une idée lumineuse, je suis preneur.

A+
Messages postés
96
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
26 juillet 2007

Salut vecchio56,

Je viens de compiler et d'essayer l'exemple.
Ca fonctionne nickel sous Windows 2000 sp4.
Ne reste plus qu'à tester sous XP sp1 et 2 pour voir.

Pour ma culture je vais quand même essayer de comprendre le code.
Il va vraiment falloir que j'apprenne le minimum sur le format PE.

Merci beaucoup !!!
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,

vecchio56 >> Merci pour ce lien. C'est très intéressant. J'espère que cela marchera avec les DLLs de hook. J'ai pas encore testé le code.