Clic de souris sans bouger la souris! [Résolu]

Messages postés
8
Date d'inscription
dimanche 8 novembre 2009
Dernière intervention
6 mai 2008
- - Dernière réponse : Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 6 mai 2008 à 02:10
Bonjour a tous,

Avec les fonctions "SetCursorPos" et "mouse_event" on peut facilement bouger la souris n'importe ou sur l'ecran et simuler un clic. Par contre, est-il possible de simuler l'effet d'un clic de souris a un certain endroit de l'ecran sans la bouger? En gros, je voudrais pouvoir clicker a un endroit precis de l'ecran a intervalle regulier, tout en utilisant ma souris pour d'autres taches, et je cherche donc un bout de code ki genere l'effet d'un clic de souris sans faire bouger "physiquement" la souris. J'espere ke c'est pas trop confus.

Merci pour votre aide,
Julamo
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
35
3
Merci
Alors tu peux lui envoyer le message de click.
Il faut au préalable récupéré l'handle de la zone à cliquer (FindWindow) puis lui envoyer un wm_lbuttondown avec les coordonnées du click.

__________
  Kenji

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
35
0
Merci
Salut,

Ben déplace la souris à l'endroit du click puis remet là à la position préalablement sauvegardée.

__________
  Kenji
Commenter la réponse de Charles Racaud
Messages postés
8
Date d'inscription
dimanche 8 novembre 2009
Dernière intervention
6 mai 2008
0
Merci
Merci Charles mais ce n'est pas possible, j'y ai pense aussi :)

En fait, il y a en moyenne 1 clic toutes les demi-secondes, si je fais bouger la souris et revenir a sa position initiale, ca ne sert a rien car les intervalles sont trop rapides et je serai incapable d'utiliser la souris pour autre chose...

Non je dois pouvoir donner des coordonnees au programme pour k'il y simule un clic sans bouger la souris, y'a pas de solution de remplacement.
Commenter la réponse de Julamo
Messages postés
8
Date d'inscription
dimanche 8 novembre 2009
Dernière intervention
6 mai 2008
0
Merci
Merci, c'est exactement ce ke je voulais!
Commenter la réponse de Julamo
Messages postés
8
Date d'inscription
dimanche 8 novembre 2009
Dernière intervention
6 mai 2008
0
Merci
Merci mais je n'arrive pas a le faire fonctionner. Voici le code ke j'utilise, le but etant de generer un clic sans utiliser la souris sur un bouton d'une fenetre. Je termine la position a atteindre dans cette fenetre et ensuite utilise "Daword" et "sendMessage". Ca ne marche pas, voyez-vous kelke chose d'anormal dans mon code?  

Public Function PositionNoMouse(ByVal HwndFenetre As Long, ByVal X As Double, ByVal Y As Double) As Integer
 
  Dim rc As RECT
  Dim result As Long
  Dim PosX As Long
  Dim PosY As Long
  Dim r As Long
  Dim PosFenX, PosFenY As Integer
  Dim PosFenX1, PosFenY1 As Integer
  Dim PosFenX2, PosFenY2 As Integer
  Dim DaWord As Long
 
  ' On Recherche la position de la fenêtre par rapport à l'écran grace a son handle
  result = GetWindowRect(HwndFenetre, rc)
  PosFenX1 = rc.Left
  PosFenX2 = rc.Right
  PosFenY1 = rc.Top
  PosFenY2 = rc.Bottom
 
  PosFenX = PosFenX1 + ((PosFenX2 - PosFenX1) / X)
  PosFenY = PosFenY1 + ((PosFenY2 - PosFenY1) / Y)
 
  PosX = CLng(PosFenX)
  PosY = CLng(PosFenY)
 
  DaWord = MakeDWord(PosX, PosY)
 
  SendMessage HwndFenetre, WM_LBUTTONDOWN, 1&, DaWord
  SendMessage HwndFenetre, WM_LBUTTONUP, 1&, DaWord
 
End Function

Public Function MakeDWord(ByVal LoWord As Integer, ByVal HiWord As Integer) As Long
MakeDWord = (HiWord * &H10000) Or (LoWord And &HFFFF&)
End Function


 
Commenter la réponse de Julamo
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
60
0
Merci
rappel:
Dim PosFenX1, PosFenY1 As Integer
PosFenX1 est un Variant

comme nous l'indique la doc:
http://msdn.microsoft.com/en-us/library/ms645607.aspx
The coordinate is relative to the upper-left corner of the client area.

ta salade a coups de GetWindowRect est donc inutile. (au pire, on aurait utilisé ClientToScreen)
Commenter la réponse de Renfield

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.