larion
Messages postés140Date d'inscriptionmercredi 28 avril 2004StatutMembreDernière intervention21 juillet 2005
-
18 sept. 2004 à 15:43
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 2012
-
18 sept. 2004 à 17:39
Bonjour,
Dans une Dll, j'ai un Hook que j'ai déclaré ainsi :
Donnees->HookHandle2 = SetWindowsHookEx(WH_CALLWNDPROCRET,(HOOKPROC)CallWndRetProc,HInst,0);
Tout fonctionne bien.
Ce Hook détecte des évènements que sur le bureau.
Dans un esprit d'optimisation, je désire initialiser ce hook que sur le Thread du bureau et non sur tous les threads :
DWORD ThreadId,ProcessId;
ThreadId=GetWindowThreadProcessId(FindWindow(_T("Progman"),NULL),&ProcessId);
Donnees->HookHandle2 = SetWindowsHookEx(WH_CALLWNDPROCRET,(HOOKPROC)CallWndRetProc,0,ThreadId);
Mais ce code n'a pas l'air de fonctionner.
Savez-vous pourquoi ?
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 18 sept. 2004 à 17:39
Salut,
C'est dit dans le passage que tu as copié/collé de MSDN: si le thread a hooker est dans ton processus, pas besoin de DLL.
Par contre pour tout ce qui est dans un autre processus, que ca soit hook global de tout des thread ou hook d'un seul thread, la DLL est obligatoire (et donc le HINSTANCE).
larion
Messages postés140Date d'inscriptionmercredi 28 avril 2004StatutMembreDernière intervention21 juillet 2005 18 sept. 2004 à 17:24
J'ai fait les 2 solutions sans succès.
hMod :
Identifies the DLL containing the hook procedure pointed to by the lpfn parameter. The hMod parameter must be set to NULL if the dwThreadId parameter specifies a thread created by the current process and if the hook procedure is within the code associated with the current process.
larion
Messages postés140Date d'inscriptionmercredi 28 avril 2004StatutMembreDernière intervention21 juillet 2005 18 sept. 2004 à 17:31
C'est malin. En fait ça marche maintenant. (???)
Tu avais raison, il faut bien mettre le HINSTANCE de la dll en 3eme paramètre. Merçi mille fois.
Désolé. :blush)