DllMain non appellée lors d'un hook global?

Résolu
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011 - 7 mai 2006 à 17:02
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011 - 8 mai 2006 à 00:56
Bonjour,

En mettant en place un hook global avec DLL, je me suis aperçu que la fonction dllMain n'était jamais exécutée. Pourtant une instance de la DLL est chargé pour chaque processus crée après la mise en place du hook. On devrai au moins avoir un appel à la fonction avec le paramètre fdwReason = DLL_PROCESS_ATTACH ?
Voila ma fontion dllMain :

//Point d'entrée de la DLL.
BOOL WINAPI DllMain(HINSTANCE hInstanceDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
//Se produit lors du chargement de la DLL par un processus(LoadLibrary).
//Pour empecher le chargement de la DLL il faut faire un "return FALSE".
case DLL_PROCESS_ATTACH:
break;

//Se produit lors du déchargement de la DLL par un processus(FreeLibrary).
case DLL_PROCESS_DETACH:
break;

//Se produit lors de l'association d'un thread avec la DLL.
case DLL_THREAD_ATTACH:
break;

//Se produit lorsqu'un thread se désassocie de la DLL.
case DLL_THREAD_DETACH:
break;
}

MessageBeep(MB_OK);

//Renvoi TRUE en cas de succès.
return TRUE;
}

Voila, comme vous pouvez le voir j'ai inclu un MessageBeep() pour me signaler si la fonction était bien appellée, hors aucun signal sonore ne s'est fait entendre...
Si vous pouviez m'expliquer pourquoi ça m'arrangerai, merci d'avance

5 réponses

HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011
8 mai 2006 à 00:56
Problème résolu, il faut simplement rajouter ceci avant la fonction DllMain :

extern "C" __declspec(dllexport)

Un grand merci à BruNews, cosmobob, victorcoasne et vdvince2015 pour la solution.
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 mai 2006 à 17:37
Enlève le MessageBeep() et mets:
case DLL_PROCESS_ATTACH:
ExitProcess(0);
break;
...

Enregistre tout avant de tester, tu enlèveras ensuite.
C'est un peu sauvage mais garanti comme test, les sons en kook c'est bof bof.

ciao...
BruNews, MVP VC++
0
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011
7 mai 2006 à 21:06
Salut BruNews,

j'ai testé et c'est toujours pareil. Logiquement je devrais plus pouvoir lancer une seule application avec le bout de code la, ça n'a strictement aucun effet. La fonction dllMain n'est jamais appellée, c'est très étrange...pourtant à part ça le hook fonctionne très bien.

Merci en tout cas, si tu as d'autres idées...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 mai 2006 à 21:50
Pour avoir ce genre de problème tu es sur devcpp je pense.
Si oui, il me revient qu'on a déjà vu cela, regarde ici:
http://www.cppfrance.com/code.aspx?id=25450

ciao...
BruNews, MVP VC++
0

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

Posez votre question
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011
7 mai 2006 à 21:56
En fait je suis sur CodeBlocks, merci pour le lien man je regarderai ça demain.
0
Rejoignez-nous