Bonjour,
ça fait bien une heure que je galère
J'ai créé une DLL, et je souhaite pour le moment faire un truc basique, à savoir afficher une messageBox sur appel du processus qui la rattache.
voici les sources:
DLL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 // dllmain.cpp : Définit le point d'entrée pour l'application DLL. #include "stdafx.h" extern "C" __declspec(dllexport) int WINAPI SayHello(); BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: SayHello(); case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } extern "C" { __declspec(dllexport) int WINAPI SayHello() { MessageBox(NULL, L"Hello", L"DLL_Hello", MB_OK); return 0; } }
Programme de test:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 // test.cpp*: définit le point d'entrée pour l'application. // #include "stdafx.h" #include "test.h" #define DLL_NAME TEXT("Hook.dll") typedef int (WINAPI *PHookSayHello)(void); int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { HMODULE hDll = LoadLibrary(DLL_NAME); PHookSayHello pHook; FARPROC fp = GetProcAddress(hDll, "SayHello"); pHook = (PHookSayHello) fp; if(NULL != pHook) pHook(); else printf ("Not found\n"); FreeLibrary(hDll); return 0; }
Le problème est le suivant:
Au chargement de la DLL, j'ai bien ma MessageBox (la DLL est correctement chargée) , mais le GetProcAdress me retourne toujours 0, comme si la fonction n'existait pas...
Quelqu'un saurait pourquoi?
Partager