Detecter, simuler un clic de souris [Résolu]

warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 5 févr. 2006 à 16:28 - Dernière réponse : cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention
- 6 févr. 2006 à 17:33
Bijour
je cherche a detectet et simuler par la suite un clic de sourie.
donc je pensais recuperer les coordonées de la sourie a chaque clic ainsi que le temps passé entre les clic
le probleme est que j'arrive avec .net à les detecter dans la form mais ce qui m'interesse c'est de detecter ces clic et recuperer ces coordonées or de la form... par exemple sur le bureau
donc je pense qu'on doit passer par les api. mais je suis pas trop opte avec les api. ..

je suis sur que quelqu'un a deja posé la question mais la fonction recherche ne semble pas marcher aujourd(hui...

donc voila un petit peu d'aide? :)

au fait connaissez vous un bon site avec pleins de fonctions des api repertoriées?

la société de consommation porte mal son nom car un con fait rarement une sommation avant de dire une connerie en société
Afficher la suite 

14 réponses

Répondre au sujet
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 5 févr. 2006 à 16:51
+3
Utile
Salut,

Pour monitorer les messages non destinés à l'application, il faut mettre en place un hook global (system-wide hook).
En général ça nécessite du code non managé, mais dans ton cas tu devrais pouvoir t'en sortir sans, juste en utilisant SetWindowsHookEx avec WM_MOUSE_LL.

Le meilleur site sur les APIs reste encore la section Win32 and COM Development dans la MSDN Library :-)
On peut aussi citer le site PInvoke.net qui est bien pratique pour les définitions des imports dans le code managé.

/*
coq
MVP Visual C#
*/
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_coq
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 5 févr. 2006 à 17:03
0
Utile
Salut, oui soit un LowLevelMouseHook, soit pour une application multimédia DirectInput en mode background. Pour simuler un clique de souris y'a la fonctions mouse_event ou SendInput qui est plus compliquée. Le mieux pour connaitre l'API Win32 c'est encore d'installer le Platforme SDK.
Commenter la réponse de Lutinore
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 5 févr. 2006 à 17:08
0
Utile
(A noter quand même qu'il vaut mieux utiliser SendInput que mouse_event.)

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 6 févr. 2006 à 09:38
0
Utile
ok merci a vous !
je vais regarde un peu toutes ces fonctions...
Commenter la réponse de warenbe
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 6 févr. 2006 à 09:50
0
Utile
en fait je suis allé voir ton site coq
excellent ce site!

voila ce que j'ai lu

This will enable you to install application hooks. However, you cannot implement global hooks in Microsoft .NET Framework. To install a global hook, a hook must have a native dynamic-link library (DLL) export to inject itself in another process that requires a valid, consistent function to call into. This requires a DLL export, which .NET Framework does not support. Managed code has no concept of a consistent value for a function pointer because these function pointers are proxies that are built dynamically.

donc si je comprend bien dans tuos les cas, vu que je suis en code managé, meme avec un hook je ne pourrai pas "capturer" les events de la sourie or de l'appli ?

je crois qu eje vais le faire en c++ ;)
Commenter la réponse de warenbe
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 6 févr. 2006 à 10:06
0
Utile
Relis plutôt mon "mais" et renseigne toi sur WH_MOUSE_LL ;-)

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 6 févr. 2006 à 10:07
0
Utile
yep mais je me dis que ça peut etre une bonne occasion pou rme remettre au c++

et ça me fais bizarre apres deux ans de me remettre au c++
j'ai l'impression de savoir rien faire :/
Commenter la réponse de warenbe
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 6 févr. 2006 à 10:18
0
Utile
Moui, ça fait souvent cet effet là :p
Il y a quelques temps j'avais fait un petit truc du genre : HOOK GLOBAL (SYSTEM-WIDE HOOK) - BLOCAGE DE TOUCHES

Dans ton cas il va falloir que tu puisses faire une remontée d'infos vers le code managé en mettant en place des callback.
Bon courage :-)

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 6 févr. 2006 à 11:51
0
Utile
Ah vi je confirme pour l'effet C++ : )

Par contre je ne vois pas trop l'interêt de passer par une DLL en C/C++ alors que le hook WH_MOUSE_LL peut être totalement codé en C# malgré ce que dit Microsoft !
Commenter la réponse de Lutinore
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 6 févr. 2006 à 12:11
0
Utile
Ils parlaient des hook globaux dans leur généralité, les 2 LL sont des exceptions :-)

D'ailleurs ils l'ont bien dit ici : http://support.microsoft.com/kb/318804/en-us

Global hooks are not supported in the .NET Framework
Except for the WH_KEYBOARD_LL low-level hook and the WH_MOUSE_LL low-level hook, you cannot implement global hooks in the Microsoft .NET Framework. To install a global hook, a hook must have a native DLL export to inject itself in another process that requires a valid, consistent function to call into. This behavior requires a DLL export. The .NET Framework does not support DLL exports. Managed code has no concept of a consistent value for a function pointer because these function pointers are proxies that are built dynamically.


Low-level hook procedures are called on the thread that installed the hook. Low-level hooks do not require that the hook procedure be implemented in a DLL.

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 6 févr. 2006 à 12:37
0
Utile
Je connais cette page, oui ils l'ont dit, mais après que les exemples ce soit multipliés sur le net : )

La doc le disait quand même mais fallait comprendre : "the WH_MOUSE_LL hook is not injected into another process. Instead, the context switches back to the process that installed the hook and it is called in its original context. Then the context switches back to the application that generated the event."

Je connais bien aussi ton hook en C, je l'avais étudié à l'époque : )
Commenter la réponse de Lutinore
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 6 févr. 2006 à 13:19
0
Utile
Concernant les exemples, je ne pense pas que ce soit lié à l'info, mais plutôt au fait que le seul "problème" avec les WH_*_LL est qu'ils nécessitent du NT.
Hors "à l'époque", le parc Win98 était encore relativement important, dans le sens qu'il fallait souvent en tenir compte lors du développement.
Maintenant je pense que la donne à bien changer, même si il doit rester pas mal de Win 98 en circulation.
:-)

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 6 févr. 2006 à 17:23
0
Utile
Maintenant je pense que la donne à bien changer, même si il doit rester pas mal de Win 98 en circulation.$


> deja je peux te dire que beaucoup d'ecoles (lycée colleges fac) sont sous win98 :/
ils tardent a changer
Commenter la réponse de warenbe
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 6 févr. 2006 à 17:33
0
Utile
Oui je me doute bien, mais je disais ça dans le sens qu'on s'en soucie probablement beaucoup moins lors de la conception.
En gros : "Si ils ne peuvent pas l'utiliser, tant pis !" (je ne parle évidemment pas des cas des développements "à la carte")

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.