bonjour,
tout dabord je precise que je sais comment charger une dll
si je ne me trompe pas, il y'a 2 cas :
1) vous avez le .lib, vous linké et vous charger avec dllimport (borland) ou sans rien sous vs2005
2) vous avez pas le .lib et là, la seule solution et d'utiliser LoadLibrary(); GetProcAddress(); FreeLibrary();
voila, je m'intersse au second cas.
vous devez avoir une declaration pour chaque fonction presente dans la dll sous la forme d'un .h ou déclarer directement avec typedef.
exemple:
le probleme ici (meme pas de fichier header...), est que vous devez déclarer toute les fonction puis les relier aux fonction de la dll par GetProcAddr().#include <windows.h>
#include <string.h>
#include <stdio.h>
// FCTX is a pointer to a function waiting an int, char * etc.
typedef int __stdcall (*FCTX)(int hWnd, char *Texte, char *Titre, unsigned int Type);
int main (int argc, char *argv[]) {
static char ModPath[255]="c:\\windows\\system32\\";
int Status;
FCTX Fn_Ptr;
HMODULE ModId;
strcat(ModPath, "user32.dll");
ModId = LoadLibrary(ModPath);
Fn_Ptr = (FCTX)GetProcAddress(ModId, "MessageBoxA");
Status = Fn_Ptr(0, "Le texte de la boite de dialogue", "Le titre", MB_OK);
FreeLibrary(ModId);
return 0;
}
Ma question est:
Serait-il possible de creer une classe qui se chargerais de faire se travail ?
exemple:
(avec les fonction déclaré dans user32dll_decl.h)#include "user23dll_decl.h"
#include "easydll.h"
int main()
{
easydll* user32dll = new easydll("c:\\windows\\system32\\user32.dll");
user32dll->MessageBox(0, "Le texte de la boite de dialogue", "Le titre", MB_OK);
delete user32dll;
return 0;
}
Existe-il une telle classe (easydll dans lexemple) ?
Est-elle a priori possible a faire ?
merci.
Partager