Je sous sous W10, toutes mises à jour faites.
J’utilise Delphi 6 Personal Edition pour réaliser une DLL avec des fonctions de service, utilisée par un programme réalisé dans un autre langage.
Je tente d’implémenter un Hook des évèmenents souris concernant la roue de la souris – rotation vers le haut/bas et clic sur la roue. Pour cela, je commence par installer un hook du type WH_MOUSE_LL . Je mémorise l’adresse de l’ancienne WndProc dans une variable globale. Comme je suis dans une DLL et je n’ai pas accès à hInstance du progamme appelant (bien que j’aie le handle de sa fenêtre principale), je tente d’installer un hook global de la manière suivante :
Cela « marche », car GenHookMouseWndProc est différent de zéro.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Const WH_MOUSE_LL = 14; var GenHookMouseWndProc : integer ; Function SetMyHook : integer ; stdcall ; export ; begin GenHookMouseWndProc := SetWindowsHookEx(WH_MOUSE_LL, @GenHookMouse_LL_FUNC, 0, 0); // tenter le hook Result := 0 ; End ;
Ma fonction callback pour le hook est la suivante :
Je sais, elle ne fait rien – c’est juste pour m’assurer que le principe du hook fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function GenHookMouse_LL_FUNC(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; begin Result := CallNextHookEx(GenHookMouseWndProc[i], nCode, wParam, lParam); End ;
Problème : dès que le hook est installé, le programme part dans une boucle infinie (le sablier s’affiche) puis disparaît finalement purement et simplement.
Question : Qu’est-ce que je n’ai pas compris dans l’installation d'un hook souris global ?
Partager