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.
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.
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