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

Julamo 8 Messages postés dimanche 8 novembre 2009Date d'inscription 6 mai 2008 Dernière intervention - 5 mai 2008 à 19:49 - Dernière réponse : Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention
- 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
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 5 mai 2008 à 22:22
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

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Charles Racaud
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 5 mai 2008 à 20:02
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
Julamo 8 Messages postés dimanche 8 novembre 2009Date d'inscription 6 mai 2008 Dernière intervention - 5 mai 2008 à 22:00
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
Julamo 8 Messages postés dimanche 8 novembre 2009Date d'inscription 6 mai 2008 Dernière intervention - 5 mai 2008 à 22:40
0
Merci
Merci, c'est exactement ce ke je voulais!
Commenter la réponse de Julamo
Julamo 8 Messages postés dimanche 8 novembre 2009Date d'inscription 6 mai 2008 Dernière intervention - 6 mai 2008 à 00:45
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
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 6 mai 2008 à 02:10
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.