Récuperer evenement click Souris - Hook

boutnell Messages postés 22 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 28 avril 2007 - 15 mars 2006 à 10:44
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 15 mars 2006 à 16:08
Bonjour,

Je voudrais pouvoir connaitre, a chaque instant et sur chaque programme qui tourne, si l'utilisateur click sur sa souris.
Par exemple, afficher un MessageBox a chaque foi que l'utilisateur click sur sa souris n'importe où sur l'écran.

J'ai fait des recherches du coté des mousehook,etc,.. mais je ne m'en sors pas..

Pouvez-vous m'aider?

8 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 mars 2006 à 10:59
il n'est pas possible de faire de hook global en C#... et plus généralement en .net


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
15 mars 2006 à 11:52
Si si Seb c'est possible avec un hook WH_MOUSE_LL directement dans un exe et uniquement en code managé.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 mars 2006 à 12:01
je veux bien un exemple alors :)


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
15 mars 2006 à 12:07
Tu as un exemple >ici<.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
15 mars 2006 à 12:11
Merci :) t'es un chef !


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
15 mars 2006 à 15:02
Je comprend pas tout là, j'ai fais un test mais ca plante sous VS2005 en .NET 2.0 et ca fonctionne avec SharpDevelop en .NET 2.0 ... mystere.
Il me fait l'exception après l'appel à SetWindowsHookEx()
que ce soit pour le clavier ou la souris.
J'ai remplacer les code pour que ce ne soit pas en hooks global ( 2 et 7 pour respectivement WH_KEYBOARD et WH_MOUSE) mais ça plante également.
Il faut que je prenne la solution sur le support MS pour les paramètres de SetWindowsHookEx()
.

public const int WH_MOUSE_LL = 14;
//mouse hook constant

hMouseHook = SetWindowsHookEx(WH_MOUSE_LL,
MouseHookProcedure,

Marshal.GetHINSTANCE(
Assembly.GetExecutingAssembly().GetModules()[0]),
0);

> ca leve l'exception


public
const
int WH_MOUSE = 7;

hMouseHook = SetWindowsHookEx(WH_MOUSE,
MouseHookProcedure,
(
IntPtr)0,

AppDomain.GetCurrentThreadId());

> ca fonctionne mais bien sur, en interne à la form

Alors là je ne comprends pas pkoi.
En tout cas bien pratique ce petit truc pour faire une sorte d'ecran de veille ...

f.colo
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
15 mars 2006 à 16:03
Un extrait d'un hook que j'avais programmé y'a longtemps et qui marchait parfaitement ( .NET 1.1 )

public static void Install( )
{
if ( hook = = IntPtr.Zero )
{
proc = new HookProc( MouseHook.LowLevelMouseProc );
hook = SetWindowsHookEx( WH.MOUSE_LL, proc, Marshal.GetHINSTANCE( typeof( MouseHook ).Module ) , 0 );

if ( hook == IntPtr.Zero )
{
throw new System.ComponentModel.Win32Exception( );
}
}
}



public static void Uninstall( )
{
if ( hook != IntPtr.Zero )
{
bool result = UnhookWindowsHookEx( hook );
proc = null;
hook = IntPtr.Zero;


if ( !result )
{
throw new System.ComponentModel.Win32Exception( );
}
}
}
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
15 mars 2006 à 16:08
MouseHook c'est la classe qui content la fonction de rappel LowLevelMouseProc.
0
Rejoignez-nous