Hook souris

Résolu
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 23 nov. 2007 à 18:53
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 - 24 nov. 2007 à 17:05
Bonjour,

Je cherhe à faire un hook sur souris qui envoi à une fenêtre précédement déclarée (HWND hwndPrinc) tous les messages reçus...
Je veux que ma fenêtre (HWND hwndPrinc) sâche tous les mouvements et actions de ma souris et celà où qu'elle soit...
Mais, je suis bloqué sur le hook et surtout sur comment faire pour que ma fenêtre (HWND hwndPrinc) reçoivent un message dés que la souris bouge...
J'ai tenté le SendMessage mais pas avec un grand succès, ma fenêtre reçoit un message seulement lorsque je la survole...

Je pense que l'on va me dire de regarder les sources et questions sur codessources, c'est chose faite...

Merci d'avance et à bientôt...


<hr />


Nico

4 réponses

ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
24 nov. 2007 à 17:05
Bonjour,

Je viens de trouver un moyen pour que mon hook souris fonctionne comme je le souhaitais:
LRESULT CALLBACK fxHookSouris (int nCode, WPARAM wParam, LPARAM lParam) {
    if ( nCode >= 0 ) {
         MOUSEHOOKSTRUCT ms = *( (MOUSEHOOKSTRUCT *)lParam );
         POINT position = ms.pt;
         if( position.x>=0 && position.x<= cxScreen && position.y>=0 && position.y <= cyScreen ) SendMessage( hwndPrinc, wParam, 0, MAKELPARAM(position.x,position.y) );
         if( wParam == WM_LBUTTONDOWN || \ //Pour empêcher que les autres fenêtres reçoivent des informations quant aux clics de la souris
             wParam == WM_LBUTTONUP || \
             wParam == WM_RBUTTONDOWN || \
             wParam == WM_RBUTTONUP ) return 1;
         return 0;
    }
 return CallNextHookEx( hookSouris, nCode, wParam, lParam);
}
il ne fallait pas que j'utilise WH_MOUSE
mais WH_MOUSE_LL

Merci à tous...
A bientôt...


<hr />


Nico
3
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
23 nov. 2007 à 19:27
Mon code actuel:
LRESULT CALLBACK fxHookSouris (int nCode, WPARAM wParam, LPARAM lParam) {
    if ( nCode >= 0 ) {
         MOUSEHOOKSTRUCT ms = *( (MOUSEHOOKSTRUCT *)lParam );
         POINT position = ms.pt;
         SendMessage( hwndPrinc, wParam, 0, MAKELPARAM(position.x,position.y) );
         return 1;
    }
 return CallNextHookEx( hookSouris, nCode, wParam, lParam);
}
Ses problèmes, hwndPrinc ne reçoit les messages que lorsque que la souris se trouve au dessus de lui... Donc pas toujours, sinon, le reste est bien les autres fenêtres ne reçoivent aucunes informations quant à la souris et sa position...
Quelqu'un saurait-t'il comment faire pour que hwndPrinc reçoive des messages y compris lorsque la souris ne la survole pas?
Merci d'avance...
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
23 nov. 2007 à 21:58
Salut,
Un exemple a adapter a tes besoins:
http://www.cppfrance.com/codes/HOOK-SOURIS-SUR-TASKBAR-WIN32_44378.aspx

Neo_Fr
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
24 nov. 2007 à 14:08
Merci mais je l'avis déjà regardé,

Mon problème est:
LRESULT CALLBACK fxHookSouris (int nCode, WPARAM wParam, LPARAM lParam) {
    if ( nCode >= 0 ) {
         MOUSEHOOKSTRUCT ms = *( (MOUSEHOOKSTRUCT *)lParam );
         POINT position = ms.pt;
         SendMessage( hwndPrinc, wParam, 0, MAKELPARAM(position.x,position.y) );
         return 1;
    }
 return CallNextHookEx( hookSouris, nCode, wParam, lParam);
}
que SendMessage( hwndPrinc, wParam, 0, MAKELPARAM(position.x,position.y) ); n'envoi un mesage à hwndPrinc seulement lorsque la souris survole ma fenêtre (enfin une partie visible de la fenêtre)...

Merci quand même...
A+
0
Rejoignez-nous