Page 1 sur 1
Delimiter une zone de recherche
Posté : jeu. 21 janv. 2021 04:59
par YuChan
Bonjour,
J'ai actuellement ce code :
Code : Tout sélectionner
Global $g_idX = 1024, $g_idY = 768
$posX = MouseGetPos(0)
$posY = MouseGetPos(1)
$GuiMouse = GUICreate("test")
GUICtrlSetData($g_idX, $posX)
GUICtrlSetData($g_idY, $posY)
MsgBox(0, "", $posX & ":" & $posY)
J'ai trouvé plusieurs script que j'essaie d'adapter mais je n'y arrive pas.
En faite j'ai une fenêtre de notepad et je souhaite rechercher ou se trouve la position de la souris dedans.
Ma zone de recherche doit etre de 1024*768
Sauf que je n'y arrive pas au résultat souhaité. Sa recherche la position de la souris sur tout mon écran et non pas que dans le bloc note avec une zone de 1024*768.
Merci si possible d’apporter votre aide en espérant que j'ai été assez claire
Re: Delimiter une zone de recherche
Posté : jeu. 21 janv. 2021 07:29
par rgx
Bonjour,
Dans l'
aide sur la fonction
MouseGetPos, il suffit de suivre le lien vers
MouseCoordMode... Tout est indiqué:
"
Détermine la manière d'utiliser les coordonnées dans les fonctions de souris, soit coordonnées absolues, soit coordonnées relatives à la fenêtre active courante:..."
Cela dit, cela retournera la position en pixels, ce qui n'est pas très utile pour le Notepad qui est un outil texte.

Re: Delimiter une zone de recherche
Posté : jeu. 21 janv. 2021 08:44
par YuChan
OK merci, je me sers déjà de cette fonction. Et malheureusement il n'y a pas de doc dessus sauf cette exemple.
Pour mon code le voici, je l'ai trouvé sur Google :
Code : Tout sélectionner
Opt("MouseCoordMode", 1)
Global $LargeurForm = 1024
Global $HauteurForm = 768
Global $NomDuForm = "Notepad"
Global $GUI = GUICreate($NomDuForm, 0, 0, 1024, 768)
WinSetTrans( $GUI, '', 0 )
GUISetState( @SW_SHOW )
Et dans le while :
Code : Tout sélectionner
If WinActive($NomDuForm) Then
$MousePos = MouseGetPos()
If $MousePos[0] < 0 Then $MousePos[0] = 0
If $MousePos[0] > $LargeurForm Then $MousePos[0] = $LargeurForm
If $MousePos[1] < 20 Then $MousePos[1] = 20
If $MousePos[1] > $HauteurForm Then $MousePos[1] = $HauteurForm
MouseMove($MousePos[0], $MousePos[1], 1)
EndIf
Mais malheureusement encore les dimensions sont pas bonne sa respect pas bien la bordure des fenêtre je sais pas pourquoi.
Merci si tu peux m'aider.
Re: Delimiter une zone de recherche
Posté : jeu. 21 janv. 2021 09:15
par rgx
...je me sers déjà de cette fonction. Et malheureusement il n'y a pas de doc dessus...
https://www.autoitscript.fr/autoit3/doc ... eCoordMode
Détermine la manière d'utiliser les coordonnées dans les fonctions de souris, soit coordonnées absolues, soit coordonnées relatives à la fenêtre active courante:
0 = Coordonnées relatives à la fenêtre active
1 = (défaut) Coordonnées absolues d'écran
2 = Coordonnées relatives à la zone client de la fenêtre active
AutoIt est remarquablement bien documenté et traduit, c'est le premier endroit où chercher
avant d'utiliser Google
Re: Delimiter une zone de recherche
Posté : jeu. 21 janv. 2021 09:18
par YuChan
Oui, cette partie de doc je l'ai vue.
Si j'ai répondu que je n'ai rien trouvé c'est que je vois pas le rapport avec les limites de la souris et pas de doc dessus.
Merci si tu peux m'aider
Re: Delimiter une zone de recherche
Posté : jeu. 21 janv. 2021 11:19
par walkson
Bonjour,
Au lieu de répondre à l'emporte pièce, faites fonctionner vos neurones
Nous sommes au summum de l'absurdité
Donc pour vous $g_idX est l'ID d'un contrôle !?!
Global $GUI = GUICreate($NomDuForm, 0, 0, 1024, 768)
C'est bien de créer une gui de dimension = 0 qui se situe en dehors de l'écran !!!
Pour quelqu'un qui prétend avoir écrit 2000 lignes de code, on peut être étonné du nombre d'erreurs en si peu de lignes
Pour contre, vous êtes incapable de comprendre ce que vous dit RGX

Re: Delimiter une zone de recherche
Posté : jeu. 21 janv. 2021 12:26
par YuChan
Merci d'avoir repondu.
Oui il y a trop d'erreur.
Le code complet c'est sa :
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
Global $g_idX = 0, $g_idY = 0
Example()
Func Example()
HotKeySet("{ESC}", "GetPos")
GUICreate("Press Esc to Get Pos", 400, 400)
$g_idX = GUICtrlCreateLabel("0", 10, 10, 50)
$g_idY = GUICtrlCreateLabel("0", 10, 30, 50)
GUISetState(@SW_SHOW)
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
GUIDelete()
EndFunc ;==>Example
Func GetPos()
Local $a = GUIGetCursorInfo()
GUICtrlSetData($g_idX, $a[0])
GUICtrlSetData($g_idY, $a[1])
EndFunc ;==>GetPos
Mais moi c'est notepad qui est lancé, du coup je sais pas faire.
Re: Delimiter une zone de recherche
Posté : jeu. 21 janv. 2021 14:02
par walkson
Lancez le code sans toucher la souris
Code : Tout sélectionner
Opt("MouseCoordMode",2)
Run("notepad.exe")
; Attend 10 secondes pour que la fenêtre du bloc-notes apparaisse.
Local $hWnd = WinWait("[CLASS:Notepad]", "", 5)
; Récupére la zone client de la fenêtre du Bloc-notes en utilisant le handle retourné par WinWait.
Local $aClientSize = WinGetClientSize($hWnd)
Local $pos = WinGetPos($hWnd,"")
; Affiche la hauteur et la largeur de la zone client.
MouseMove($aClientSize[0],$aClientSize[1])
Sleep(500)
ControlSend($hWnd,"","Edit1","Width: " & $aClientSize[0] & @CRLF & "Height: " & $aClientSize[1])
ToolTip("la souris est ici",$pos[0] + $pos[2],$pos[1] + $pos[3],"INFO",2)
MsgBox(64, "", "Regardez en bas à droite de Notepad")
; Ferme la fenêtre du Bloc-notes en utilisant le handle retourné par WinWait.
WinClose($hWnd)
WinWaitActive("[CLASS:#32770]");fermer sans enregistrer
Sleep(300)
Send("{TAB}{ENTER}")
Première remarque:
Opt("MouseCoordMode",2)
voir commentaire rgx
Deuxième remarque: ce code est issu de l'aide
Troisième remarque:
Cela dit, cela retournera la position en pixels, ce qui n'est pas très utile pour le Notepad qui est un outil texte.
Re: Delimiter une zone de recherche
Posté : ven. 22 janv. 2021 01:44
par YuChan
Je te remercie c'est ce que je cherchais.
Par contre j'ai un probleme.
J'ai beau sortir la souris hors de la zone, sa me remet pas dans le cadre de notepad.
Merci