[Dev C++] disparition hook

erehtnaP Messages postés 6 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 23 avril 2005 - 18 avril 2005 à 15:36
erehtnaP Messages postés 6 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 23 avril 2005 - 19 avril 2005 à 13:03
Salut,



je commence en C++, et je voudrais creer un hook global avec Dev-C++

Le code de la dll et de l'exe se compile sans erreur, les fonction de
mises en place et de désinstallation des hooks marchent, mais le Hook,
ne s'effectue pas!!



Voila le code de la dll :
















#include <windows.h>

HHOOK hhk;
HINSTANCE hThisMod;

LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam);
__declspec (dllexport) int InitHook (void);
__declspec (dllexport) int EndHook (void);

LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if ( nCode < 0 || nCode == HC_NOREMOVE )
return CallNextHookEx(hhk, nCode, wParam, lParam);

// Pour éviter les répétitions
if (((DWORD)lParam & 1<<30) != FALSE)
return CallNextHookEx(hhk, nCode, wParam, lParam);








if (wParam== 'A')
{
MessageBeep(MB_OK);
return 1;
}










return CallNextHookEx(hhk, nCode, wParam, lParam);
}

BOOL APIENTRY DllMain (HINSTANCE hinst, DWORD reason, LPVOID reserv)
{
if (reason==DLL_PROCESS_ATTACH)
hThisMod = hinst;
return 1;
}






__declspec (dllexport) int InitHook (void)
{
if (!hhk)
hhk = SetWindowsHookEx (WH_KEYBOARD, (HOOKPROC)KeyboardProc, hThisMod, 0);

return 1;
}






__declspec (dllexport) int EndHook (void)
{
if (hhk)







{
UnhookWindowsHookEx (hhk);
return 1;
}
return 0;
}



La fonction InitHook me renvois 1 (donc la fonction est bien appelé
et elle retourne une valeur), et la fonction EndHook 0 (donc le hook
n'a pas lieu)..



Mais par contre je comprends pas pourquoi !!



Ca fait un bout de temps que je cherches et toute aide est bienvenue.

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 avril 2005 à 15:56
Ta fonction InitHook renvoie 1 à tout coup, tu n'as donc aucune garantie que réussira.

ciao...
BruNews, MVP VC++
0
erehtnaP Messages postés 6 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 23 avril 2005
18 avril 2005 à 16:17
Oui, c'est juste pour tester la communication entre la dll et l'exe, je
me sers de la fonction EndHook pour savoir si la mise en place du hook
a lieu (et la ca n'a pas lieu).



Mais par contre, je vois vraiment pas pourquoi !!!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 avril 2005 à 16:27
Verifie avec Depends.exe que ta fonction KeyboardProc() est correctement exportée, on ne sait jamais.

ciao...
BruNews, MVP VC++
0
erehtnaP Messages postés 6 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 23 avril 2005
18 avril 2005 à 16:57
Erf je trouve 4 fonction, dont 2 fois le KeyboardProc()



Sinon a part ca et la dll "MSJAVA.dll" introuvable
(mais bon je penses pas que dans ce contexte ca soit important...)
et 2 Warnings :



Warning: At least one delay-load dependency module was not found.

Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.



Tout ce passe bien, ca mis a part.



En tournant un peu le code j'ai réussis a faire un Hook local avec cette fontion
KeyboardProc() de la dll
0

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

Posez votre question
erehtnaP Messages postés 6 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 23 avril 2005
18 avril 2005 à 21:37
Je viens de trouver, le probleme vient de Dev C++



Donc je compile la dll avec Borland, et le programme avec Dev C++

Par contre ton programme m'a été tres utile BruNews,



Merci beaucoup
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
19 avril 2005 à 06:20
Salut,

Si tu es sous Windows 2000 ou XP, voici un hook clavier qui marche avec Dev c++ :

http://www.cppfrance.com/code.aspx?id=27169

La procédure de hook est dans le même exécutable.
0
erehtnaP Messages postés 6 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 23 avril 2005
19 avril 2005 à 13:03
Erf non, rien ne marche, c'est vraiment bizard!!



pourtant pas d'erreur, mais bon j'ai trouvé la solution en compilant la dll avec le compilateur en ligne de commande de Borland,



Merci quand meme
0
Rejoignez-nous