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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

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

#1

Message 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.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#2

Message 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.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#3

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

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2128
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#4

Message par TommyDDR »

Je pense qu'en soulignant "quelconque" il voulait parler d'une fenêtre pas forcément créé par ses soins.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#5

Message par Tlem »

Oui. J'avais bien compris.
Il suffit de donner le bon hanche. :)

Envoyé depuis mon appareil mobile.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2128
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#6

Message 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)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#7

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#8

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

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

#9

Message 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 ?
Répondre