Salut à tous,
je suis entrain de faire une cure intensive de tutoriels sur les hook et de pages du site MSDN...mais là je ne comprend plus.
Je met en place un HOOK via une DLL, par exemple sur le clavier.
Pas de pb le hook fonctionne et l'application reçoit bien le message de ma DLL.
Mais le problème est que je ne sais pas comment dire à windows de continuer à transmettre le message aux autres applications ou au contraire de ne pas le transmettre...
Voilà ma fonction CALLBACK (pour information je fais un hook bas niveau sur le clavier et je voudrais que les messages injectés soient transmis aux autres applications sans passer par la mienne et si le message n'a pas été injecté, que ce soit mon application qui décide si le message doit continuer à être transmis ou pas).... :
AM_KEYBOARD_HOOK est un message que j'ai défini moi même.
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 extern "C" LRESULT CALLBACK __declspec(dllexport) LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam ) { if ( nCode < 0 ) return CallNextHookEx( VueDonnees->HookKeyboardHandle, nCode, wParam, lParam); KBDLLHOOKSTRUCT *hook_infos = (KBDLLHOOKSTRUCT*) lParam; // Vérifie que ce n'est pas un événement injecté if ( ! ( hook_infos->flags & LLKHF_INJECTED ) ) SendMessage( VueDonnees->MainFormHandle, AM_KEYBOARD_HOOK, wParam, hook_infos->vkCode ); return CallNextHookEx( VueDonnees->HookKeyboardHandle, nCode, wParam, lParam); }
L'application qui gère le Hook est une application écrite en C++ Builder, elle utilise donc le type TMessage pour traiter un message.
Ma fonction qui traite le message AM_KEYBOARD_HOOK retourne au SendMessage de la DLL les valeurs suivantes (via TMessage.Result) :
0 si le message doit être transmis aux autres applications
1 si le message ne doit pas être transmis aux autres application.
J'espère que vous pourez m'aider !
Merci d'avance
Partager