Hook souris 64 bits

jctransler Messages postés 2 Date d'inscription jeudi 18 novembre 2010 Statut Membre Dernière intervention 18 septembre 2012 - 18 sept. 2012 à 10:49
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 18 sept. 2012 à 17:49
Bonjour,

Je rencontre un problème avec les hooks souris sous windows 64 bits

Je dispose d'une application Java qui fait appel à une dll rédigée en C++ pour récupérer des informations sur la position de la souris et l'élément qu'elle survole.

Cette dll ne fonctionne pas sous windows 64 bits. Quand on lance le programme, tout clic ou survol sur un élément 64 bits (application 64 bits ou tout élément système) est bloqué.
J'ai recompilé la dll en 64 bits, mais cette fois c'est aux éléments 32 bits de ne plus répondre.
étant donné qu'en environnement 64 bits, les deux types d'éléments cohabitent, je suis condamné à fournir un programme fonctionnant dans les deux cas.

En faisant des recherches j'ai trouvé un approche basée sur 2 executables et 2 dll, mais j'ai du mal à voir comment la mettre en place.

J'ai aussi essayé avec le hook WH_MOUSE_LL, aulieu de WH_MOUSE mais il ne récupère aucune information.

Si quelqu'un a déjà été confronté à ce problème et l'a résolu, cela me retirerait une belle épine du pied ^^

3 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 sept. 2012 à 14:26
Il faut bien 2 progs lanceurs (32 et 64) ainsi que leurs DLLs 32 et 64 contenant hook.
Prévoir aussi discussion BIdirectionnelle pour lancer et enlever hook proprement.
En C aucun probleme (PostMessage et fonctions associées), java aucune idée.

ciao...
BruNews, MVP VC++
0
jctransler Messages postés 2 Date d'inscription jeudi 18 novembre 2010 Statut Membre Dernière intervention 18 septembre 2012
18 sept. 2012 à 14:47
Mais ce que je ne comprends pas, c'est comment déterminer le hook à utiliser...je lance les deux et ça marche tout seul ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 sept. 2012 à 17:49
Faut comprendre comment fonctionnera ce qu'on commence à faire...

Un hook est une injection de code dans un ou des processus par l'intermediaire d'un chargement de DLL dans chacun de ces processus.

Vu qu'une DLL 64 ne peut etre chargée que dans un processus 64 et 32 dans processus 32, il est clair qu'il te faut les 2 si tu veux que le hook fonctionne sur toutes les fenetres.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous