Malheuresement mon Hook fonctionne à moitié, il n'est pas Gloabal ! En
effet il doit afficher une message lorsqu'un évènement de la souris
s'est produit mais il l'affiche seulement quand je passe le poiteur
sur ma fenêtre de Visual Studio (Projet Souris) qui est en train d'exécuter mon
programme...
Comment faire pour que mon Hook soit Global et intercepte TOUS les évènements de la souris !?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 oct. 2007 à 15:25
Nous sommes fin 2007, plus jamais inférieur à cela:
#define _WIN32_WINNT 0x0501
Va voir un peu les exemples de hook, j'en ai fait des tas (et d'autres aussi).
Surtout, jamais de MessageBox ou autre truc bloquant dans la fonction de hook.
Regarde VerifNotepadProcess() comment je détermine si est processus notepad.
Toi tu vérifieras si est processus de Shell_TrayWnd:
FindWindow()
GetWindowThreadProcessId()
et avec GetCurrentProcessId() comparé avec celui obtenu au dessus, on sait où on est.
cs_lol55
Messages postés86Date d'inscriptiondimanche 8 janvier 2006StatutMembreDernière intervention 5 décembre 2010 6 oct. 2007 à 15:18
Plus ien ne se passe lorsque j'utilise WH_MOUSE_LL ! Et je n'ai même plus de MessageBox qui s'affiche lorsque je mets le curseur sur la fenêtre de Visual Studio (de mon Projet Souris) .
Pourrais-ce être lié a #define _WIN32_WINNT 0x0400 !? Car lorsque j'enlève cette ligne, il ne connais plus WH_MOUSE_LL.
cs_lol55
Messages postés86Date d'inscriptiondimanche 8 janvier 2006StatutMembreDernière intervention 5 décembre 2010 7 oct. 2007 à 15:29
Je me suis aidé de ce code :
http://www.cppfrance.com/codes/HOOK-DLL-HOOK-FACILE-POUR-VB6_41774.aspx J'ai un modifié pour qu'il Hook la souris comme je le souhaitait et ça marche ! J'arrive enfin à "Hooker" globalement !
(Il est vrai qu'il ne faut pas utiliser de fonction(s) bloquante tel que MessageBox dans l'Hook, Merci du conseil BruNews ! )
Mon but est maintenant de récupérer tous les évènements de la souris effectués (jusqu'à là c'est bon) sur la barre des tâches (là c'est plus dur ! )
Voici pour le moment la fonction Procédure de mon Hook :
LRESULT CALLBACK HookBarredesTachesProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
FILE* Fichier = NULL;
Fichier = fopen("test.txt", "r+");
J'ai une variable Hwnd Global correspondant à l'Handle de la barre des tâches (la fenêtre "Shell_TrayWnd" )
Comment pourrais-faire pour savoir si lorsque je reçois un évènement dans mon Hook (donc de la souris), s'il est adressé à la barre des tâches !?
Je cherche un moyen de faire cela depuis plusieurs semaines mais je ne trouve toujours pas...
J'ai aussi regardé du côté de l'ID du processus,... si cela avait un rapport, je ne sais pas trop.