Page 2 sur 2

Re: [R] Fermer les fenetres

Posté : jeu. 21 janv. 2021 13:57
par Tlem
Bonjour.
Je ne sais pas quel type de programme vous avez écrit pour avoir autant de ligne de code, mais j'ai fortement l'impression qu'il n'est pas adapté au mode standard.
Si vous devez ré-écrire votre code, passez en mode événementiel, je pense que cela vous permettra de mieux gérer vos différentes fenêtres (a condition de rester logique).

Re: [R] Fermer les fenetres

Posté : ven. 22 janv. 2021 00:45
par TommyDDR
Si vous ne savez pas "dans quel while" mettre votre fermeture de fenêtre, c'est que vous ne comprenez pas comment fonctionne votre script. Il suffit de mettre la fermeture de votre fenêtre au moment dans le script où vous le souhaitez, c'est à vous de savoir à quel moment (action utilisateur ?) vous fermez la fenêtre et de trouver où se situe ce moment dans le code.

Re: [R] Fermer les fenetres

Posté : sam. 23 janv. 2021 09:50
par YuChan
Merci TommyDDR.

Je connais mon code, j'ai beau placer mes fermetures de fenêtres et sa marche pas.
J'ai tout essayé.

Par contre on est obligé de faire comme sa :

Code : Tout sélectionner

while 1

	switch GUIGetMsg

		case $bouton
		Exit
			EndSwitch  
	WEnd 			
Ou on peut faire autrement, car la je suis coincé

Merci

Re: [R] Fermer les fenetres

Posté : sam. 23 janv. 2021 13:03
par Tlem
Bonjour YuChan
Sans plus de code, il va être difficile de vous aider plus.
Exit est la commande qui permet de quitter le code et donc de fermer le processus.
Si chez vous cela ne fonctionne pas, c'est que la commande n'est pas exécutée.
Si elle n'est pas exécutée, c'est que la/les conditions ne sont pas remplies

Dans le code que vous nous donnez ci-dessus, il faut que GUIGetMsg retourne bien les événements de la fenêtre active.
Il faut que dans ces événements le handle de l'élément $bouton soit bien retourné (parce qu'il a été cliqué).
Il faut bien entendu que $bouton soit le handle d'un élément graphique de la fenêtre active.

Voici un code simple qui devrait je l'espère vous emmener à comprendre comment ça fonctionne :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Example") ; Fenêtre principale
$Btn_Coucou = GUICtrlCreateButton("A Que Coucou", 10, 370, 85, 25) ; A que coucou
$Btn_Quitter = GUICtrlCreateButton("Quitter", 220, 370, 85, 25) ; Bouton Quitter
$Btn_Ok = GUICtrlCreateButton("OK", 310, 370, 85, 25) ; Bouton Ok

 GUISetState(@SW_SHOW, $hGUI) ; On affiche la fenêtre

While 1 ; Boucle d'attente infinie
	Switch GUIGetMsg() ; Lecture des événements graphique 
		Case $GUI_EVENT_CLOSE, $Btn_Quitter ; On clique sur la croix ou le bouton Quitter
			Exit ; On quitte le code

		Case $Btn_Ok ; On clique sur le bouton
			TrayTip("Vous avez cliqué OK", "Bouton OK", 5) ; Affichage du message

		Case $Btn_Coucou ; On clique sur le bouton A Que Coucou
			TrayTip("La fenêtre est masquée pour 5 secondes", "A Que Coucou", 3) ; Affichage du message
			GUISetState(@SW_HIDE, $hGUI) ; On cache la fenêtre
			Sleep(5000) ; On fait une pause de 5 secondes
			GUISetState(@SW_SHOW, $hGUI) ; On affiche la fenêtre
			TrayTip("La fenêtre est réaffichée", "A Que Coucou", 3) ; Affichage du message

    EndSwitch
WEnd

Re: [R] Fermer les fenetres

Posté : sam. 23 janv. 2021 21:09
par mikell
Thierry, te fatigue pas
Ce qu'il lui faut évidemment c'est GuiGetMsg(1) pour gérer à la fois les events et les id des controles (et pas les handles... :mrgreen: ), et plusieurs gui dans la même boucle While
C'est expliqué dans la page du fichier d'aide sur GuiGetMsg, notamment l'exemple n°2 qui est limpide
C'est expliqué dans le wiki, j'ai fourni le lien
Mais ce mec veut aller plus vite que la musique et courir avant de savoir marcher. On peut pas aider ce genre de personne :roll:

Re: [R] Fermer les fenetres

Posté : sam. 23 janv. 2021 21:44
par Tlem
Je pense surtout qu'il aurait mieux fait de passer en événementiel...

Re: [R] Fermer les fenetres

Posté : sam. 23 janv. 2021 21:55
par mikell
Je pense aussi, mais vu son niveau et son aversion à faire les efforts pour apprendre, pour l'instant il en est totalement incapable

Re: [R] Fermer les fenetres

Posté : dim. 24 janv. 2021 10:35
par YuChan
Voici mon code et je suis paumé avec les fermeture des fenetre
Si j'utilise GUIDelete() sa me ferme la fenetre mais je peux pas fermer les autres car il est en arrière plan

Code : Tout sélectionner

						While 1
							Switch GUIGetMsg()
								
								Case $ButtonValider
									MsgBox(64, "", "test OK")
									
								Case $ButtonCancel
									GUIDelete()
									
								Case $GUI_EVENT_CLOSE
									ExitLoop 

							EndSwitch
						Wend

Re: [R] Fermer les fenetres

Posté : dim. 24 janv. 2021 11:48
par Tlem
Normal. Vous faites un GuiDelete mais ne sortez pas de la boucle (comme vous le faites pour $Gui_Event_Close).

Ceci dénote bien votre manque de réflexion.
Au lieu de poser sans cesse des questions faites des recherches et LISEZ LA DOCUMENTATION, sans quoi,mon chat préféré va finir de s'occuper de vous. :twisted:

Re: [R] Fermer les fenetres

Posté : lun. 25 janv. 2021 04:38
par YuChan
Merci Tlem, alors après plusieurs jours de réflexion et codage intensif... Je viens de me rendre conte que c'est ISN - Autoit Studio qui fait que mes fermetures de fenêtre bug !!!

Le code était bon, faut juste pas faire confiance a ISN - Autoit Studio

Voila désolé pour cela.

Sujet CLOS

Re: [R] Fermer les fenetres

Posté : lun. 25 janv. 2021 11:39
par mikell
YuChan a écrit : lun. 25 janv. 2021 04:38faut juste pas faire confiance a ISN - Autoit Studio
Pas vraiment. Normal que tu aies eu des problèmes, ISN - Autoit Studio est un bon outil, mais ce n'est qu'un outil et comme tous les outils il faut savoir s'en servir. Si tu plantes un clou de travers ce n'est pas la faute du marteau

De toute façon il est illusoire de penser qu'un outil peut faire le boulot à ta place. Tant que tu ne comprendras pas le code que tu écris, ça ne marchera pas, ou alors tu auras l'impression que ça marche mais il y aura des bugs dont la correction te prendra infiniment plus de temps que si tu avais fait les choses correctement dès le début