Page 1 sur 1

[..] Contrôler le changement de position d'une fenêtre d'app

Posté : lun. 03 févr. 2014 19:10
par papami
Bonjour


Comme avec WM_MOVE pour une GUI, est-il possible de détecter le déplacement d'une fenêtre quelconque autrement que par des WinGetPos("titre"... incessants dans la boucle principale

Ceci pour lier une petite gui à une autre fenêtre, Notepad, SciTe, ou autre.

Merci.

Re: [..] contrôler le changement de position d'une fenêtre d

Posté : lun. 03 févr. 2014 21:45
par jguinch
autrement que par des WinGetPos("titre"... incessants dans la boucle principale : malheureusement, il n'y a guère d'autre solution.
Si ton problème est la boucle principale, tu peux dédier le travail de surveilance à une fonction appelée par AdlibRegister.

Re: [..] Contrôler le changement de position d'une fenêtre d

Posté : lun. 03 févr. 2014 22:36
par Tlem
Ben sinon, il y a la solution du GUIRegisterMsg pour le message WM_MOVE. ;)

Il me semble bien que cela a déjà été discuté sur le forum.

Re: [..] Contrôler le changement de position d'une fenêtre d

Posté : mar. 04 févr. 2014 11:31
par TommyDDR
Je pense qu'en soulignant "quelconque" il voulait parler d'une fenêtre pas forcément créé par ses soins.

Re: [..] Contrôler le changement de position d'une fenêtre d

Posté : mar. 04 févr. 2014 13:28
par Tlem
Oui. J'avais bien compris.
Il suffit de donner le bon hanche. :)

Envoyé depuis mon appareil mobile.

Re: [..] Contrôler le changement de position d'une fenêtre d

Posté : mar. 04 févr. 2014 14:25
par TommyDDR
"Envoyé depuis mon appareil mobile"
Donc je suppose que l'auto-correction à transformé "handle" en "hanche"
Mais GUIRegisterMsg ne prends pas de handle en paramètre
(J'avais ouvert un topic pour le même sujet mais tu m'avais dit que c'était pas possible en GUIRegisterMsg)

Re: [..] Contrôler le changement de position d'une fenêtre d

Posté : mar. 04 févr. 2014 20:59
par Tlem
TommyDDR a écrit :je suppose que l'auto-correction à transformé "handle" en "hanche"
Heuu, effectivement. :oops:
TommyDDR a écrit :Mais GUIRegisterMsg ne prends pas de handle en paramètre
Je n'ai jamais parlé des paramètres de la fonction !
Le but est d'enregistrer le message Windows de déplacement d'une fenêtre (paramètre msgID) et d'y appliquer une fonction.
Ensuite dans la fonction appliquée pour GUIRegisterMsg, on contrôle les éléments qui concernent uniquement la fenêtre cible (d’où le handle). ;)

La section "Remarks" de la fonction GUIRegisterMsg montre de quoi je veux parler. D'ailleurs, l'exemple fournit dans la doc AutoIt 3.3.9.0 me parait sympa. ;)

Après, je n'affirme pas que ça fonctionne pour une fenêtre en dehors de la GUI du script, mais c'est à essayer. ;)


Edit : Effectivement, GUIRegisterMsg semble ne 'capter' que les événements liés au script lui même. :?

J'ai trouvé ça, mais on repart sur une boucle de gestion des fenêtres :
http://www.autoitscript.com/forum/topic ... egistermsg

Re: [..] Contrôler le changement de position d'une fenêtre d

Posté : mar. 04 févr. 2014 22:20
par jguinch
Bon, je viens de bricoler un petit exemple bien tordu.
Mais je préfère largement utiliser WinGetPos en boucle plutôt que mon truc... :lol:
► Afficher le texte

Re: [R] Contrôler le changement de position d'une fenêtre d

Posté : mer. 05 févr. 2014 16:56
par papami
Bonjour et MERCI à tous :
Je reprends le train en marche car je croyais bien avoir coché la case 'suivre le sujet' ... et j'attendais dans mon coin. Mais rien n'est venu ... Donc ce n'est qu'en repassant sur le forum que je vois vos contributions.

Alors, dans l'ordre :
jguinch : AdlibRegister n'apporte rien de mieux, vu que son fonctionnement est bloquant
Tlem : oui GUIRegisterMsg comme son nom l'indique ne traite que les infos en provenance de la GUI
TommyDDR : "Je pense qu'en soulignant "quelconque" il voulait parler d'une fenêtre pas forcément créé par ses soins." c'est cela même :)
jguinch : "Bon, je viens de bricoler un petit exemple bien tordu. Mais je préfère largement utiliser WinGetPos en boucle plutôt que mon truc..."

ben solution originale qui m'a 'forcé' à télécharger la dernière version d'Autoit car mes vieilles n'ont pas les Include...
Mais cela n'est pas encore l'idéal : si on secoue un peu Notepad de droite à gauche on voit bien que la GUI décolle de quelques pixels : ce n'est pas un drame en soi, mais effectivement le WinGetPos fait aussi bien en pas plus compliqué :wink:

Résultat des courses :
- S'il s'agit de manipuler deux GUI le contrôle par event (WM_MOVE) est parfait, les deux fenêtres sont vraiment scotchées.
- S'il s'agit d'une fenêtre Win autre (dont on ne peut recevoir d'event), suivie par une GUI, les deux sont bien 'collées' tant qu'il n'y a rien d'autre dans le While que les calculs de position, mais il y a des petits défauts au décollage dès que le While contrôle d'autres éléments.

En attendant mieux je vais m'en contenter.
Mais étant bricoleur je vais réfléchir un peu plus au problème :D

Merci encore à tous.

P.S. sans avoir touché aux cases à cocher, la 'M'avertir ' est bien cochée. Donc pourquoi n'ai-je rien reçu ?