Bonjour et bonnes fêtes à tous.
Je travaille sur un script qui asservi un autre prog:
la gui de mon script s'ouvre et déplace la gui d'un autre prog (démarré depuis mon script) pour la positionner à l’intérieur d'elle même (genre le prog numéro 2 fais parti de mon script).
Jusqu' ici tout va bien mais j'ai un problème avec les WinSetOnTop : je voudrai que quelque soit l'endroit ou je click l'ordre de mes guis reste le même, à savoir la gui n° 2 sur la gui n°1.
Peut être en faisant de la gui n°2 un enfant de la n°1 ?
Pour l'instant j'essaie avec des WinSetOnTop, mais c'est pas super!
Quelqu'un a une idée?
Merci d'avance.
[..] Bloquer l'ordre d'affichage de 2 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.
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
[..] Bloquer l'ordre d'affichage de 2 gui
Cut, srcipteur du dimanche...désolé !-)
- TommyDDR
- Modérateur

- Messages : 2127
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Bloquer l'ordre d'affichage de 2 gui
Essayez d'utiliser _WinAPI_SetParent, cela devrait résoudre vos problèmes.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [..] Bloquer l'ordre d'affichage de 2 gui
Merci pour votre aide.
Je test ça dès que possible.
Je test ça dès que possible.
Cut, srcipteur du dimanche...désolé !-)
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [..] Bloquer l'ordre d'affichage de 2 gui
Ça ne fonctionne pas.
Ou du moins ça fonctionne mais des que je click sur la gui de mon script ça le fais frezzer impossible faire plus... obliger de killer le processus depuis le gestionnaire de tâches!
Je pense que c'est a cause de (doc autoit _WinAPI_SetParent):
Ou du moins ça fonctionne mais des que je click sur la gui de mon script ça le fais frezzer impossible faire plus... obliger de killer le processus depuis le gestionnaire de tâches!
Je pense que c'est a cause de (doc autoit _WinAPI_SetParent):
The new parent window and the child window must belong to the same application.
Cut, srcipteur du dimanche...désolé !-)
Re: [..] Bloquer l'ordre d'affichage de 2 gui
Tu aurais pas un morceau de code à nous montrer ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [..] Bloquer l'ordre d'affichage de 2 gui
ça devrait fonctionner!!, je suis entrain de décortiquer mon script (je test en ajoutant des fonctions petit a petit...)
En essayant de le simplifier pour le poster j'ai constaté que dans sa version minimale (de mon script) _WinAPI_SetParent($handle,$Form1) fonctionne sans problèmes. Donc au boulot...
En essayant de le simplifier pour le poster j'ai constaté que dans sa version minimale (de mon script) _WinAPI_SetParent($handle,$Form1) fonctionne sans problèmes. Donc au boulot...
Cut, srcipteur du dimanche...désolé !-)
- cutprod
- Niveau 6

- Messages : 273
- Enregistré le : jeu. 30 sept. 2010 17:25
- Localisation : Sud Ouest
- Status : Hors ligne
Re: [..] Bloquer l'ordre d'affichage de 2 gui
Voila j'ai ma réponse : mon prog externe supporte très bien que sa gui devienne l'enfant de la gui de mon script... sauf si je rajoute un $group dans mes contrôles!!
J'ai fait le test avec exactement la même fonction et un $group dans la gui: si notepad.exe comme prog externe et tout fonctionne par contre avec mon autre prog externe (RoboRealm) tout plante (sauf si je vire le $group):
Merci a ceux qui ont essayé de m'aider.
PS: pour l'instant je m'en sort(le blocage de l'ordre d'affichage) avec un
"$Form1 = GUICreate("", 1029, 583, 10, 10, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))" sur ma gui
et "_WinAPI_SetWindowLong ($handle, $GWL_HWNDPARENT, $Form1)"
sur l'autre gui, mais pas de déplacements possible pour les 2 gui en même temps (sauf à faire une fonction qui détecte le déplacements de l'une et bouge l'autre en conséquence...) long et pas essentiel: je bloque les déplacements:
J'ai fait le test avec exactement la même fonction et un $group dans la gui: si notepad.exe comme prog externe et tout fonctionne par contre avec mon autre prog externe (RoboRealm) tout plante (sauf si je vire le $group):
Code : Tout sélectionner
Func test()
$array_pos_gui_principale = WinGetPos($Form1)
ShellExecute("notepad.exe")
WinWait("[CLASS:Notepad]", "", 10)
$handle = WinGetHandle("[CLASS:Notepad]")
WinMove($handle,"",$array_pos_gui_principale[0] + 3,$array_pos_gui_principale[1] + 25,684,480)
_WinAPI_SetParent($handle,$Form1)
EndFuncPS: pour l'instant je m'en sort(le blocage de l'ordre d'affichage) avec un
"$Form1 = GUICreate("", 1029, 583, 10, 10, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))" sur ma gui
et "_WinAPI_SetWindowLong ($handle, $GWL_HWNDPARENT, $Form1)"
sur l'autre gui, mais pas de déplacements possible pour les 2 gui en même temps (sauf à faire une fonction qui détecte le déplacements de l'une et bouge l'autre en conséquence...) long et pas essentiel: je bloque les déplacements:
Code : Tout sélectionner
Func OnSysCommand($hWnd, $Msg, $wParam, $lParam)
$test = BitAND($wParam, 0xFFF0)
If $test = 0xF010 Then;OR $test = 0xF020 Then
Return False
EndIf
Return $GUI_RUNDEFMSG
EndFuncCut, srcipteur du dimanche...désolé !-)
