Page 1 sur 1

[..] Déplacer deux fenêtres en même temps

Posté : mer. 21 mai 2014 16:12
par pumilio
Bonjour,

Est-il possible de déplacer la fenêtre d'un logiciel (notepad.exe par exemple) en même temps qu'une Gui ?

Je souhaiterais que lorsque je déplace ma Gui sur l'écran avec la souris cela fasse également bouger la fenêtre notepad.exe en parallèle (même mouvement, même nombre de pixel) ? Je n'ai pas trouvé de piste de départ :oops: .

Merci.

Re: [..] Déplacer deux fenêtres en même temps

Posté : mer. 21 mai 2014 16:32
par TommyDDR
Vous pouvez utiliser GUIRegisterMsg dans cet exemple j'ai utilisé le paramètre envoyé à WM_COMMAND pour récupérer la position x et y de la zone cliente de la fenêtre déplacée, cela ne correspond dont pas à la position de la fenêtre dans son ensemble, mais rien ne vous empêche de récupérer sa position avec WinGetPos.
► Afficher le textecode

Re: [..] Déplacer deux fenêtres en même temps

Posté : mer. 21 mai 2014 23:05
par jguinch
La solution proposée par Tommy est pour moi la meilleure.
Juste une remarque, concernant la position de la fenêtre : lorsque Aero est activé, les coordonnées renvoyées par WinGetPos (ou autre) ne correspondent pas exactement à la taille et position de la fenêtre.
Utiliser _WinGetPosEx() à la place si besoin.
► Afficher le texteavec _WinGetPosEx
@Tommy : je n'ai pas compris les deux test suivants :? :
If($x > 60000) Then $x -= 0x10000
If($y > 60000) Then $y -= 0x10000

Re: [..] Déplacer deux fenêtres en même temps

Posté : jeu. 22 mai 2014 00:23
par TommyDDR
c'est quand la fenêtre est en position négative wParam renvoie 0xFFFF (65535) pour -1 par exemple donc j’enlève 0x10000 (65536) pour repasser en négatif.
Essaye en enlevant les lignes et passe la fenêtre en négatif sur les x, tu verras notepad disparaitre ^^.
Je dois t'avouer que le 60000 est purement arbitraire.

(Merci pour _WinGetPosEx() )

Re: [..] Déplacer deux fenêtres en même temps

Posté : jeu. 22 mai 2014 10:58
par pumilio
Merci à vous deux,

J'ai pu parfaitement adapter le code de TommyDDR sur mon projet. je voulais également tester celui de jguinch. Il fonctionne mais je rencontre une difficulté : notepad doit impérativement être lancé en premier pour que ça fonctionne. Dans mon cas de figure il s'ouvre après (manuellement par exemple). J'ai tenté de trouver la solution mais je n'ai pas réussi. Comment faire ?

De plus je souhaiterais que notepad reste toujours devant la Gui. En utilisant WinSetOnTop c'est un peu trop radical. Dans ce cas notepad reste devant toutes les fenêtres qui peuvent s'afficher à l'écran. Est-il possible de gérer ce cas de figure ?

Merci.