Page 1 sur 1
[R] Bug à la fermeture de la 2eme GUI
Posté : dim. 04 déc. 2011 16:54
par SurPriseS
http://www.autoitscript.fr/forum/viewto ... 230#p59230
Bonjour !
Petit bug que j'arrive pas à résoudre... (presque sur que c'est une bêtise, mais je trouve pas

)
Quand je choisit de modifier le volume (icône volume mute en haut à droite), la gui 2 apparais bien (elle est créer et détruite dans "Fonction gui volume.au3").
Je la lance via :
C'est la première fois que j'utilise "AdlibRegister" mais je suis pas certain de l'utilisé correctement...
Bref, la gui2 se créer bien et se détruit bien, mais je n'est plus accès au fonction de la gui principale (comme si elle était planté/en pause). Que se soit une fois que la gui2 est détruite, ou bien pendant, hors avec "AdlibRegister" la GUI1 devrais continuer de tourner normalement ?
2eme chose, es-ce qu'il y'a une méthode pour garder la gui2 toujours au dessus de la gui1 ?
Merci

Re: [..] bug à la fermeture de la 2eme GUI
Posté : dim. 04 déc. 2011 17:59
par mikell
Avec AdlibRegister("_gui_volume") tu lances la fonction _gui_volume() à répétition, par défaut toutes les 250 ms
Si tu veux quand même utiliser AdlibRegister il te faut mettre en tête de la fonction AdlibUnRegister()
De plus,
l'aide a écrit :AdlibRegister - Remarks
The adlib function should be kept simple as it is executed often and during this time the main script is paused.
Dans le while de la fonction volume, ya un Sleep(50) et tu incrémentes 50 fois, ce qui donne... 250 ms
2eme chose, es-ce qu'il y'a une méthode pour garder la gui2 toujours au dessus de la gui1 ?
$WS_EX_TOPMOST ou WinSetOnTop($gui2, "", 1)
Re: [..] bug à la fermeture de la 2eme GUI
Posté : dim. 04 déc. 2011 18:05
par SurPriseS
C'est ce que j'étais entrain de relire, et de me dire que sa colle pas avec ce que je veux faire...
Pourtant de souvenir, c'est bien cette fonction qui permet de faire du "multi tache" avec autoit ?
Mais le bug ne viens pas de AdlibRegister, vu que si je lance ma fonction "normalement", ben, ça plante pareil...
Pour $WS_EX_TOPMOST, je l'ai déjà, mais sa suffit pas... mais vu que les 2 gui ont cet attribut... à voir...
WinSetOnTop($gui2, "", 1), ne fait pas plus d'effet (mais ça vient peut être du fait que l'autre GUI est aussi en $WS_EX_TOPMOST)
Re: [..] bug à la fermeture de la 2eme GUI
Posté : dim. 04 déc. 2011 18:19
par mikell
Tu as essayé GuiSwitch($gui1) avant de détruire la gui2 ?
Re: [..] bug à la fermeture de la 2eme GUI
Posté : dim. 04 déc. 2011 18:36
par SurPriseS
Je ne connaissais pas cette fonction, mais ça ne change rien...
Y'avais quelques erreurs de variable que j'ai corrigé, mais sa ne change rien...
j'ai réup une version "corrigé" :
http://www.k1der.net/~surprise/fichiers ... e%20V2.zip
Les erreurs restantes sont du à des fonctions qui ont était désactivé pour le moment...
Mais je me dit que je m'y prend peut être mal...
Mon but, c'est que le script principal continue de fonctionner correctement si on change le volume... par exemple si on arrive sur un changement de chanson quand on modifie le volume, il faut que le script continue d'avancer normalement et passe bien à la chanson suivante...
C'est bien le $WS_EX_TOPMOST de la première GUI que la 2eme peut passer au second plan... Faut que je fasse des tests...
Re: [..] bug à la fermeture de la 2eme GUI
Posté : dim. 04 déc. 2011 19:51
par mikell
AMHA tant que tu auras une boucle while secondaire qui tourne tu bloqueras le script principal...
Faudrait essayer de faire sans

Re: [..] bug à la fermeture de la 2eme GUI
Posté : dim. 04 déc. 2011 21:36
par SurPriseS
Mouais, donc je suis dans la merdouille quoi !
va falloir cogiter pour trouver une solution, enfin, si solution il y as...
Re: [..] bug à la fermeture de la 2eme GUI
Posté : dim. 04 déc. 2011 21:52
par mikell
SurPriseS a écrit :va falloir cogiter pour trouver une solution, enfin, si solution il y as...
Il y a
Tu peux très bien ouvrir une 2ème gui et la commander depuis le script principal
Re: [..] bug à la fermeture de la 2eme GUI
Posté : dim. 04 déc. 2011 22:12
par SurPriseS
Euh, je comprend pas tout
Un 2eme programme à part entière qui papote avec le premier ?
Parce que là j'ouvre déjà une 2eme GUI, mais je comprend pas le commander depuis la première ?

Re: [..] bug à la fermeture de la 2eme GUI
Posté : lun. 05 déc. 2011 17:14
par mikell
Ben la gestion des controles de la 2ème gui peut être faite dans la boucle principale du script maitre
Le plus simple que j'aie déjà fait était structuré comme ça :
► Afficher le texte
Code : Tout sélectionner
While 1
$msg = GuiGetMsg(1)
Select
Case $msg[0] = $GUI_EVENT_CLOSE
_Exit()
Case $msg[0] = $controle1 [color=#008000] ; controles de la gui1[/color]
....
EndSelect
If $marqueur_gui2 = 1 Then [color=#008000]; on utilise un marqueur qui est à 1 si la gui2 existe, sinon 0[/color]
Select
Case $msg[0] = $controle2 [color=#008000]; controles de la gui2[/color]
....
EndSelect
EndIf
If $marqueur_gui3 = 1 Then [color=#008000]; idem pour la gui3[/color]
Select
Case $msg[0] = $controle3
....
EndSelect
EndIf
WEnd
Func _Exit()
Select
Case $msg[1] = $gui1
Exit
Case $msg[1] = $gui2
GuiDelete($gui2)
$marqueur_gui2 = 0
Case $msg[1] = $gui3
GuiDelete($gui3)
$marqueur_gui3 = 0
EndSelect
EndFunc
ça marchait pas mal ^^
Re: [..] Bug à la fermeture de la 2eme GUI
Posté : mar. 06 déc. 2011 12:11
par SurPriseS
hum, ok je vois a peu près ! j'essayerais cette aprem

sinon pte pas besoin de passer par une 2eme gui... mais je ne sais pas se que donnerais une superposition de bouton png... je testerais aussi... mais j'ai peur d'erreur de clipping et autre...
merci en tout cas

Re: [R] Bug à la fermeture de la 2eme GUI
Posté : mar. 06 déc. 2011 21:44
par SurPriseS
Bon, j'ai testé ce soir finalement ^^
Donc :
- Superposition des images PNG = très mauvaise idée !

- Solution de mikell = Marche au poil !
Merci beaucoup
