[R] Empecher deplacement GUI
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Empecher deplacement GUI
Glop,
Peut on empêcher les déplacement d'une GUI et comment ? Ou peut on replacer une gui (si le user la déplace) ?
(dommage que le terme "gui", qui fait 3 caractères, soit ignoré lors d'une recherche sur le forum)
Merci à vous.
Peut on empêcher les déplacement d'une GUI et comment ? Ou peut on replacer une gui (si le user la déplace) ?
(dommage que le terme "gui", qui fait 3 caractères, soit ignoré lors d'une recherche sur le forum)
Merci à vous.
Modifié en dernier par DimVar le jeu. 19 janv. 2012 09:42, modifié 1 fois.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
-
- Niveau 7
- Messages : 368
- Enregistré le : ven. 09 déc. 2011 11:25
- Status : Hors ligne
Re: [..] Empecher deplacement GUI
Salut, je ne crois pas que l'on puisse empêcher un déplacement de la fenêtre (je crois que ça sera toujours possible en autoit), par contre, tu peux faire un événement qui s'execute quand la fenêtre bouge qui la remet au bon endroit, ou tout simplement une boucle qui vérifie regulierement la position de la fenêtre (et pourquoi pas un adlib register ?)
Re: [..] Empecher deplacement GUI
La GUI de ton programme ou d'un autre ?
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
-
- Niveau 7
- Messages : 368
- Enregistré le : ven. 09 déc. 2011 11:25
- Status : Hors ligne
Re: [..] Empecher deplacement GUI
Je pense de son programme mais c'est vrai qu'il ne l'a pas spécifié...
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Empecher deplacement GUI
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
$gui = GUICreate("My GUI",200,200)
GUISetState()
$pos = WinGetPos($gui)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If $msg =$GUI_EVENT_PRIMARYUP Then WinMove($gui, "", $pos[0], $pos[1])
WEnd
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Empecher deplacement GUI
Ne fonctionne pas si on passe par 'Déplacer' du menu contextuel de l'icône de la barre des taches + flèche clavier (ou souris dans un deuxième temps).
Qui à être sauvage, autant faire ceci :
L'idéal étant de passer par une CallBack, mais là, ça fait beaucoup plus de ligne de code. 
Tout dépend du code général. Si le code est light, alors la bidouille ci-dessus convient, sinon on peut aussi faire ceci :
Mais je préfère la CallBack. 
Qui à être sauvage, autant faire ceci :
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
$gui = GUICreate("My GUI",200,200)
GUISetState()
$pos = WinGetPos($gui)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Sleep(50)
WinMove($gui, "", $pos[0], $pos[1])
WEnd

Tout dépend du code général. Si le code est light, alors la bidouille ci-dessus convient, sinon on peut aussi faire ceci :
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
$gui = GUICreate("My GUI",200,200)
GUISetState()
$pos1 = WinGetPos($gui)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
$pos2 = WinGetPos($gui)
If $pos1[0] <> $pos2[0] or $pos1[1] <> $pos2[1] Then WinMove($gui, "", $pos1[0], $pos1[1])
WEnd

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é".
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é".
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Empecher deplacement GUI
Bon ben comme ça alors 

Code : Tout sélectionner
#include <GUIConstantsEx.au3>
$gui = GUICreate("My GUI",200,200,-1, -1, -1, -1, WinGetHandle("[CLASS:Progman]"))
GUISetState()
$pos = WinGetPos($gui)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If $msg =$GUI_EVENT_PRIMARYUP Then WinMove($gui, "", $pos[0], $pos[1])
WEnd
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Empecher deplacement GUI
Je ne vois pas la différence en dehors de l'ajout d'options dans GUICreate. 
Le comportement reste le même :
1 - Je lance la GUI
2 - Dans la barre des taches je fait un clic droit sur le programme en cours
3 - Je sélectionne "Déplacer"
4 - Je joue avec les flèches du clavier pour déplacer la fenêtre.
5 - La GUI bouge aussi avec la souris mais sans cliquer

Le comportement reste le même :
1 - Je lance la GUI
2 - Dans la barre des taches je fait un clic droit sur le programme en cours
3 - Je sélectionne "Déplacer"
4 - Je joue avec les flèches du clavier pour déplacer la fenêtre.
5 - La GUI bouge aussi avec la souris mais sans cliquer

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é".
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é".
Re: [..] Empecher deplacement GUI
Merci à vous deux. Je clos.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Empecher deplacement GUI
Hum sur mon XP faire de la gui une fille de Progman a comme conséquence qu'elle ne s'affiche plus dans la barre des tâches, mais apparemment ce n'est pas le cas ailleursTlem a écrit :2 - Dans la barre des taches je fait un clic droit sur le programme en cours

" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- ZDS
- Membre émérite
- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: [R] Empecher deplacement GUI
Bonjour,
Je sais que le sujet a été résolu, mais je propose une alternative : Au lieu de remettre la fenetre à sa place quand elle bouge, pourquoi ne pas l'empécher de bouger? ça éviterait les scintillements désagréables ^^A bientôt.
PS: Je me demande si c'est le genre de code que Tlem a appelé "callback" (mais je ne pense pas, j'appellerai ça plutôt "registerMsg"). Dans ce cas, puisqu'il n'a pas posté de code, en voici un exemple.
PS2: Lesolutionneur, 90% du temps où ce n'est pas possible, au final ça l'est
PS3: Le code au milieu est volontaire, pour montrer qu'il est toujours possible en interne de bouger la fenêtre, mais les commandes telles que montrées plus haut (souris, clavier, barre de tâches, etc...) sont inactives.
Je sais que le sujet a été résolu, mais je propose une alternative : Au lieu de remettre la fenetre à sa place quand elle bouge, pourquoi ne pas l'empécher de bouger? ça éviterait les scintillements désagréables ^^
► Afficher le texteBlocage fenêtre
PS: Je me demande si c'est le genre de code que Tlem a appelé "callback" (mais je ne pense pas, j'appellerai ça plutôt "registerMsg"). Dans ce cas, puisqu'il n'a pas posté de code, en voici un exemple.
PS2: Lesolutionneur, 90% du temps où ce n'est pas possible, au final ça l'est

PS3: Le code au milieu est volontaire, pour montrer qu'il est toujours possible en interne de bouger la fenêtre, mais les commandes telles que montrées plus haut (souris, clavier, barre de tâches, etc...) sont inactives.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [R] Empecher deplacement GUI

J'ai trouvé 0xF010 = SC_MOVE mais que signifie exactement cette valeur 0xFFF0 qui sert dans tous les tests ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- ZDS
- Membre émérite
- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: [R] Empecher deplacement GUI
Le FFF0 n'est qu'un masque, permettant de dire qu'on ne garde que la partie significative du wParam, soit les 2 derniers octets, mais que les 4 derniers bits ne sont pas utiles.
Ne me demande pas ce qu'il y a au dessus de FFFF, ni ce qui utilise le dernier nombre, je n'en sais rien du tout ^^ Ce que j'ai remarqué par contre, c'est qu'en mettant sur quasiment tout et n'importe quel composant de mon script, une fonction de ce type (avec un ConsoleWrite dedans), tu récupères pas mal d'infos sur les événements que gère la fenêtre. Par exemple, F060 correspond à une fermeture, F010 à un déplacement, F020 à une réduction, F120 à une restauration, etc...
Disons que le mieux pour utiliser ce genre de truc, c'est la pratique (et les plantages qui vont avec ^^).
Ne me demande pas ce qu'il y a au dessus de FFFF, ni ce qui utilise le dernier nombre, je n'en sais rien du tout ^^ Ce que j'ai remarqué par contre, c'est qu'en mettant sur quasiment tout et n'importe quel composant de mon script, une fonction de ce type (avec un ConsoleWrite dedans), tu récupères pas mal d'infos sur les événements que gère la fenêtre. Par exemple, F060 correspond à une fermeture, F010 à un déplacement, F020 à une réduction, F120 à une restauration, etc...
Disons que le mieux pour utiliser ce genre de truc, c'est la pratique (et les plantages qui vont avec ^^).
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Empecher deplacement GUI
C'est exactement ce que j'appelle une CallBack.ZDS a écrit :PS: Je me demande si c'est le genre de code que Tlem a appelé "callback" (mais je ne pense pas, j'appellerai ça plutôt "registerMsg").
Extrait de ce lien : http://www.autoitscript.fr/forum/viewto ... 732#p53732
Le seul truc, c'est que je l'imaginais un tout petit peut plus complexe car je n'avais pas fait de recherches.Tlem a écrit :Humm, effectivement, pour la recherche, il fallait utiliser CallBack et GUIRegisterMsg

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é".
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é".
Re: [R] Empecher deplacement GUI
Merci pour ce complément d'info.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !