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.

:wink:

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 :evil:
Nous sommes au summum de l'absurdité :evil:
Global $g_idX = 1024, $g_idY = 768

$posX = MouseGetPos(0)
$posY = MouseGetPos(1)
   
$GuiMouse = GUICreate("test")
GUICtrlSetData($g_idX, $posX)
GUICtrlSetData($g_idY, $posY)
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 :evil:
Pour contre, vous êtes incapable de comprendre ce que vous dit RGX :evil:

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