Page 1 sur 1

[R] Où a cliqué la souris ?

Posté : sam. 17 juil. 2010 17:32
par linvok
Bonjour,
je cherche à savoir où a cliqué la souris et où a-t-on relaché le bouton
ex : on selectionne plusieurs icones en faisant un rectangle avec la souris

Re: [..] où a cliqué la souris ?

Posté : sam. 17 juil. 2010 23:01
par matwachich
mousegetpos() couplé à _ispressed()

Re: [..] Où a cliqué la souris ?

Posté : dim. 18 juil. 2010 09:12
par linvok
je ne trouve pas _ispressed() dans la doc ni française ni anglais

Re: [..] Où a cliqué la souris ?

Posté : dim. 18 juil. 2010 10:49
par Tlem
Vous avez mal cherchez, ou alors vous avez une très vielle version de AutoIt. :shock:

Lancez Scite -> Appuyez sur F1 -> Sélectionnez l'onglet Index (si nécessaire) -> Tapez le début de la fonction à rechercher _Ispr -> lorsque la fonction apparait dans la colonne en dessous de la recherche, faites deux clics dessus. :P

Ou

C:\Program Files\AutoIt3\AutoIt3.chm -> Sélectionnez l'onglet Index (si nécessaire) -> Tapez le début de la fonction à rechercher _Ispr -> lorsque la fonction apparait dans la colonne en dessous de la recherche, faites deux clics dessus.

Ou encore

Cliquez sur Démarrer -> Cliquez sur Tous les programmes -> Cliquez sur AutoIt V3 -> Et cliquez sur AutoIt Help File -> Sélectionnez l'onglet Index (si nécessaire) -> Tapez le début de la fonction à rechercher _Ispr -> lorsque la fonction apparait dans la colonne en dessous de la recherche, faites deux clics dessus.

Re: [..] Où a cliqué la souris ?

Posté : dim. 18 juil. 2010 11:16
par alex1205
Essaie ça :

Code : Tout sélectionner

#include <Misc.au3>
$dll = DllOpen("user32.dll") ; Ouvre une DLL
While 1
    If _IsPressed("01", $dll) Then ; Si tu appuie sur le bouton gauche de la souris :
        $MouseGetPos = MouseGetPos() ; Calcule la position de la souris
        MsgBox(0, "Exemple", "Vous êtes à " & $MouseGetPos[0] & ", " & $MouseGetPos[1]) ; Affiche les coordonées de la position de la souris
    EndIf
    If _IsPressed("1B", $dll) Then ; Si tu appuie sur la touche Echap :
        ExitLoop ; Sort de la boucle infinie
    EndIf
WEnd
Exit
Sinon, si tu n'as pas _IsPressed :

Code : Tout sélectionner

; #FUNCTION# ====================================================================================================================
; Name...........: _IsPressed
; Description ...: Check if key has been pressed
; Syntax.........: _IsPressed($sHexKey[, $vDLL = 'user32.dll'])
; Parameters ....: $sHexKey     - Key to check for
;                  $vDLL        - Handle to dll or default to user32.dll
; Return values .: True         - 1
;                  False        - 0
; Author ........: ezzetabi and Jon
; Modified.......:
; Remarks .......: If calling this function repeatidly, should open 'user32.dll' and pass in handle.
;                  Make sure to close at end of script
;                  01 Left mouse button
;                  02 Right mouse button
;                  04 Middle mouse button (three-button mouse)
;                  05 Windows 2000/XP: X1 mouse button
;                  06 Windows 2000/XP: X2 mouse button
;                  08 BACKSPACE key
;                  09 TAB key
;                  0C CLEAR key
;                  0D ENTER key
;                  10 SHIFT key
;                  11 CTRL key
;                  12 ALT key
;                  13 PAUSE key
;                  14 CAPS LOCK key
;                  1B ESC key
;                  20 SPACEBAR
;                  21 PAGE UP key
;                  22 PAGE DOWN key
;                  23 END key
;                  24 HOME key
;                  25 LEFT ARROW key
;                  26 UP ARROW key
;                  27 RIGHT ARROW key
;                  28 DOWN ARROW key
;                  29 SELECT key
;                  2A PRINT key
;                  2B EXECUTE key
;                  2C PRINT SCREEN key
;                  2D INS key
;                  2E DEL key
;                  30 0 key
;                  31 1 key
;                  32 2 key
;                  33 3 key
;                  34 4 key
;                  35 5 key
;                  36 6 key
;                  37 7 key
;                  38 8 key
;                  39 9 key
;                  41 A key
;                  42 B key
;                  43 C key
;                  44 D key
;                  45 E key
;                  46 F key
;                  47 G key
;                  48 H key
;                  49 I key
;                  4A J key
;                  4B K key
;                  4C L key
;                  4D M key
;                  4E N key
;                  4F O key
;                  50 P key
;                  51 Q key
;                  52 R key
;                  53 S key
;                  54 T key
;                  55 U key
;                  56 V key
;                  57 W key
;                  58 X key
;                  59 Y key
;                  5A Z key
;                  5B Left Windows key
;                  5C Right Windows key
;                  60 Numeric keypad 0 key
;                  61 Numeric keypad 1 key
;                  62 Numeric keypad 2 key
;                  63 Numeric keypad 3 key
;                  64 Numeric keypad 4 key
;                  65 Numeric keypad 5 key
;                  66 Numeric keypad 6 key
;                  67 Numeric keypad 7 key
;                  68 Numeric keypad 8 key
;                  69 Numeric keypad 9 key
;                  6A Multiply key
;                  6B Add key
;                  6C Separator key
;                  6D Subtract key
;                  6E Decimal key
;                  6F Divide key
;                  70 F1 key
;                  71 F2 key
;                  72 F3 key
;                  73 F4 key
;                  74 F5 key
;                  75 F6 key
;                  76 F7 key
;                  77 F8 key
;                  78 F9 key
;                  79 F10 key
;                  7A F11 key
;                  7B F12 key
;                  7C-7F F13 key - F16 key
;                  80H-87H F17 key - F24 key
;                  90 NUM LOCK key
;                  91 SCROLL LOCK key
;                  A0 Left SHIFT key
;                  A1 Right SHIFT key
;                  A2 Left CONTROL key
;                  A3 Right CONTROL key
;                  A4 Left MENU key
;                  A5 Right MENU key
;                  BA ;
;                  BB =
;                  BC ,
;                  BD -
;                  BE .
;                  BF /
;                  C0 `
;                  DB [
;                  DC \
;                  DD ]
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func _IsPressed($sHexKey, $vDLL = 'user32.dll')
    ; $hexKey must be the value of one of the keys.
    ; _Is_Key_Pressed will return 0 if the key is not pressed, 1 if it is.
    Local $a_R = DllCall($vDLL, "short", "GetAsyncKeyState", "int", '0x' & $sHexKey)
    If @error Then Return SetError(@error, @extended, False)
    Return BitAND($a_R[0], 0x8000) <> 0
EndFunc   ;==>_IsPressed
Insère ça dans le code et enlève le #include <Misc.au3>

Re: [..] Où a cliqué la souris ?

Posté : dim. 18 juil. 2010 20:26
par linvok
merci pour vos réponses mais est-il possible de savoir la pos ou on enffonce le clic et celle ou on le relache ?

Re: [..] Où a cliqué la souris ?

Posté : lun. 19 juil. 2010 15:47
par SagePourpre
Il suffit d'intégrer une seconde boucle qui reste en fonction jusqu'à ce que le bouton gauche
soit relâché puis de reprendre la position à la sortie, comme ceci.

Code : Tout sélectionner

#include <Misc.au3>
$dll = DllOpen('user32.dll')
While 1
    Sleep(10)

    If _IsPressed(01, $dll) Then
        $presse = MouseGetPos()
        While _IsPressed(01, $dll) = 1
            Sleep(10)
        WEnd
        $relache = MouseGetPos()
        MsgBox(0,'test','Pressé (x:' & $presse[0] & ',y:' & $presse[1] & ') et relaché (x:' & $relache[0] & ',y:' & $relache[1] & ')')

    EndIf

WEnd
 

Re: [..] Où a cliqué la souris ?

Posté : mar. 20 juil. 2010 22:05
par sylvanie
Bonsoir,
je suis tombé sur ce lien intéressant passant par un enregistrement à la callback de gestion des évènements de la souris

avantages: permet de catcher beaucoups plus d'évènements.

inconvénient : il y a plus de travail ;-)

http://www.autoitscript.com/forum/index ... pic=103362

dans l'exple fourni, il utilise une GUI pour illustrer, mais on peut aisément partir de cet exple pour rediriger l'évènement souhaiter vers un fichier, etc.

Re: [R] Où a cliqué la souris ?

Posté : jeu. 05 août 2010 21:24
par linvok
merci pour vos réponses
mis en résolu