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

Messages postés
145
Date d'inscription
dimanche 2 décembre 2001
Dernière intervention
10 septembre 2009
- 5 févr. 2006 à 16:28 - Dernière réponse :
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 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 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 5 févr. 2006 à 16:51
3
Merci
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#
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de cs_coq
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 5 févr. 2006 à 17:03
0
Merci
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
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 5 févr. 2006 à 17:08
0
Merci
(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
Messages postés
145
Date d'inscription
dimanche 2 décembre 2001
Dernière intervention
10 septembre 2009
- 6 févr. 2006 à 09:38
0
Merci
ok merci a vous !
je vais regarde un peu toutes ces fonctions...
Commenter la réponse de warenbe
Messages postés
145
Date d'inscription
dimanche 2 décembre 2001
Dernière intervention
10 septembre 2009
- 6 févr. 2006 à 09:50
0
Merci
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
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 6 févr. 2006 à 10:06
0
Merci
Relis plutôt mon "mais" et renseigne toi sur WH_MOUSE_LL ;-)

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Messages postés
145
Date d'inscription
dimanche 2 décembre 2001
Dernière intervention
10 septembre 2009
- 6 févr. 2006 à 10:07
0
Merci
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
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 6 févr. 2006 à 10:18
0
Merci
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
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 6 févr. 2006 à 11:51
0
Merci
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
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 6 févr. 2006 à 12:11
0
Merci
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
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 6 févr. 2006 à 12:37
0
Merci
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
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 6 févr. 2006 à 13:19
0
Merci
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
Messages postés
145
Date d'inscription
dimanche 2 décembre 2001
Dernière intervention
10 septembre 2009
- 6 févr. 2006 à 17:23
0
Merci
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
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
- 6 févr. 2006 à 17:33
0
Merci
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.