[...] Problème avec mouseclickplus.au3

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
PsrY
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 25 juil. 2009 01:35
Status : Hors ligne

[...] Problème avec mouseclickplus.au3

#1

Message par PsrY »

Bonjour;

N'arrivant vraiment pas à faire fonctionner la fonction _Mouseclickplus, j'ai essaillé de la réduire au minimum, avec des msgbox pour vérifier que tout se déroule bien. le handle fonctionne, mais la souris ne bouge pas d'un pouçe...

édit : je sens que mon petit bout de code à un effet, car quand il tourne, le curseur "sautille" toute les 3 secondes...

voiçi l'udf "_mouseclickplus.au3" :

Code : Tout sélectionner

;===============================================================================
  ;
  ; Function Name:  _MouseClickPlus()
  ; Version added:  0.1
  ; Description:    Sends a click to window, not entirely accurate, but works
  ;                 minimized.
  ; Parameter(s):   $Window     =  Title of the window to send click to
  ;                 $Button     =  "left" or "right" mouse button
  ;                 $X          =  X coordinate
  ;                 $Y          =  Y coordinate
  ;                 $Clicks     =  Number of clicks to send
  ; Remarks:        You MUST be in "MouseCoordMode" 0 to use this without bugs.
  ; Author(s):      Insolence <insolence_9@yahoo.com>
  ;
  ;===============================================================================
 Func _MouseClickPlus($Window, $Button = "left", $X = "", $Y = "", $Clicks = 1)
    Local $MK_LBUTTON       =  0x0001
    Local $WM_LBUTTONDOWN   =  0x0201
    Local $WM_LBUTTONUP     =  0x0202

    Local $MK_RBUTTON       =  0x0002
    Local $WM_RBUTTONDOWN   =  0x0204
    Local $WM_RBUTTONUP     =  0x0205

    Local $WM_MOUSEMOVE     =  0x0200

    Local $i                = 0

    Select
    Case $Button = "left"
       $Button     =  $MK_LBUTTON
       $ButtonDown =  $WM_LBUTTONDOWN
       $ButtonUp   =  $WM_LBUTTONUP
    Case $Button = "right"
       $Button     =  $MK_RBUTTON
       $ButtonDown =  $WM_RBUTTONDOWN
       $ButtonUp   =  $WM_RBUTTONUP
    EndSelect

    If $X = "" OR $Y = "" Then
       $MouseCoord = MouseGetPos()
       $X = $MouseCoord[0]
       $Y = $MouseCoord[1]
    EndIf

    For $i = 1 to $Clicks
       DllCall("user32.dll", "int", "SendMessage", _
          "hwnd",  WinGetHandle( $Window ), _
          "int",   $WM_MOUSEMOVE, _
          "int",   0, _
          "long",  _MakeLong($X, $Y))

       DllCall("user32.dll", "int", "SendMessage", _
          "hwnd",  WinGetHandle( $Window ), _
          "int",   $ButtonDown, _
          "int",   $Button, _
          "long",  _MakeLong($X, $Y))

       DllCall("user32.dll", "int", "SendMessage", _
          "hwnd",  WinGetHandle( $Window ), _
          "int",   $ButtonUp, _
          "int",   $Button, _
          "long",  _MakeLong($X, $Y))
    Next
 EndFunc




 Func _MakeLong($LoWord,$HiWord)
    Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
 EndFunc
et voiçi le bout de code que j'essai de faire fonctionner en vain :

Code : Tout sélectionner

opt("MouseCoordMode", 0)
 $X=500
 $Y=300
 $WM_MOUSEMOVE=0x0200
 $window=inputbox ("handle","Quel est le nom de la fenêtre ?","Google - Mozilla Firefox")
 msgbox (1,"handle", "le handle et :" & WinGetHandle($window))

while 1
    sleep(3000)
 DllCall("user32.dll", "int", "SendMessage", "hwnd", WinGetHandle($window), "int", $WM_MOUSEMOVE, "int", 0, "long", _MakeLong($X, $Y))
 WEnd

  Func _MakeLong($LoWord,$HiWord)
    Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc
voila, je suis vraiment dans l'impasse je n'y arrive vraiment pas... le handle fonctionne. Je suis sous windows seven.

Merci beaucoup pour l'aide éventuelle :-)
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [...]probleme avec mouseclickplus.au3

#2

Message par SagePourpre »

Quel est le but de votre script exactement ?
L'UDF _MouseClickPlus semble dater d'assez longtemps ( 2005 ?)


Vous voulez bouger la souris dans la fenêtre de Mozilla Firefox ...
La fenêtre est active lorsque vous performez cette action ?
Un MouseMove régulier ne vous convient pas ?

Avec un peu plus de détails sur le déroulement de l'action à entreprendre, il serait
possible d'évaluer ce que vous voulez faire exactement.

À première vue, j'aurais tendance à dire que vous tentez simplement de faire
un MouseMove régulier avec une fonction compliquée pour rien.

Ai-je oublié de considérer un détail qui rendrait nécessaire l'utilisation de _MouseClickPlus ?
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
PsrY
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 25 juil. 2009 01:35
Status : Hors ligne

Re: [...] Problème avec mouseclickplus.au3

#3

Message par PsrY »

Bonjour,
en fait je cherche plus préscisément à envoyer un click à mozilla non actif (réduit)

c'est pourquoi j'essaie d'utiliser mousseclickplus :)

voila merci de l'aide éventuelle :p
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [...] Problème avec mouseclickplus.au3

#4

Message par SagePourpre »

À priori, j'aurais tendance à dire que le moyen
le plus simple d'effectuer des clics sur une fenêtre non-active est d'utiliser la commande
ControlClick.

Pour une fenêtre de firefox, je dirais même qu'il y'a encore mieux : l'UDF ff.au3 qui est bourré de fonctions
exprès pour mener toutes sortes d'actions dans une fenêtre firefox.

Le lien vers l'UDF
http://www.autoitscript.com/forum/index ... opic=95595
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Répondre