Page 1 sur 1
[R] Remplacer un Case par une autre fonction
Posté : mer. 13 févr. 2008 22:35
par Vins83
Bonsoir a tous
Voilà un petit probleme,qui me turlupine.
Je ne peut pas utiliser de case dans ma boucle while car elle doit chercher si le processus est en cour:
Donc,si j'ai çà,c faut,je peux quitter,mais ma boucle ne se ferme pas
Code : Tout sélectionner
Run("cleanmgr.exe /dc /sagerun:1")
While 1
$msg = GUIGetMsg()
Select
; Quitter
Case $msg = $bouttonquitter
ProcessClose("cleanmgr.exe")
Exit
If ProcessExists("cleanmgr.exe") Then ContinueLoop
If Not ProcessExists("cleanmgr.exe") Then ExitLoop
EndSelect
WEnd
Si j'ai ça,c presque bon,car ma boucle se fini bien,mais je n'ai pas ma fonction quitter car je ne peux l'inserrer.
Code : Tout sélectionner
Run("cleanmgr.exe /dc /sagerun:1")
While 1
If ProcessExists("cleanmgr.exe") Then ContinueLoop
If Not ProcessExists("cleanmgr.exe") Then ExitLoop
WEnd
Quelqu'un a t'il une idée?
un ControlClick peu etre?
Merci
Re: [..]Remplacer un Case par une autre fonction
Posté : mer. 13 févr. 2008 23:01
par eln
Code : Tout sélectionner
Run("cleanmgr.exe /dc /sagerun:1")
While ProcessExists("cleanmgr.exe")=0 ;A adapter : http://www.autoitscript.fr/forum/viewtopic.php?f=11&t=374
$msg = GUIGetMsg()
Select
; Quitter
Case $msg = $bouttonquitter
ProcessClose("cleanmgr.exe")
Exit
EndSelect
WEnd
Re: [..]Remplacer un Case par une autre fonction
Posté : jeu. 14 févr. 2008 00:36
par Tlem
Pourquoi ne pas utiliser tout simplement le
RunWait ?
Code : Tout sélectionner
RunWait(@SystemDir & '\cleanmgr.exe /sagerun:1', "", @SW_SHOW)
D'après Microsoft, le commutateur /D n'est pas utilisé si on utilise /sagerun:n
Re: [..]Remplacer un Case par une autre fonction
Posté : jeu. 14 févr. 2008 06:33
par Vins83
Tlem a écrit :Pourquoi ne pas utiliser tout simplement le RunWait ?
Le probleme du runwait,c'est que je ne peu pas interrompre l'action en cours...
Re: [..]Remplacer un Case par une autre fonction
Posté : jeu. 14 févr. 2008 06:43
par Vins83
eln a écrit :Code : Tout sélectionner
Run("cleanmgr.exe /dc /sagerun:1")
While ProcessExists("cleanmgr.exe")=0 ;A adapter : http://www.autoitscript.fr/forum/viewtopic.php?f=11&t=374
$msg = GUIGetMsg()
Select
; Quitter
Case $msg = $bouttonquitter
ProcessClose("cleanmgr.exe")
Exit
EndSelect
WEnd
Merci beaucoup pour ta réponse,c'est effectivement ce dont j'avais besoin..
Re: [R]Remplacer un Case par une autre fonction
Posté : jeu. 14 févr. 2008 06:44
par Vins83
Vins83 a écrit :Bonsoir a tous
Voilà un petit probleme,qui me turlupine.
Je ne peut pas utiliser de case dans ma boucle while car elle doit chercher si le processus est en cour:
Donc,si j'ai çà,c faut,je peux quitter,mais ma boucle ne se ferme pas
Code : Tout sélectionner
Run("cleanmgr.exe /dc /sagerun:1")
While 1
$msg = GUIGetMsg()
Select
; Quitter
Case $msg = $bouttonquitter
ProcessClose("cleanmgr.exe")
Exit
If ProcessExists("cleanmgr.exe") Then ContinueLoop
If Not ProcessExists("cleanmgr.exe") Then ExitLoop
EndSelect
WEnd
Si j'ai ça,c presque bon,car ma boucle se fini bien,mais je n'ai pas ma fonction quitter car je ne peux l'inserrer.
Code : Tout sélectionner
Run("cleanmgr.exe /dc /sagerun:1")
While 1
If ProcessExists("cleanmgr.exe") Then ContinueLoop
If Not ProcessExists("cleanmgr.exe") Then ExitLoop
WEnd
Quelqu'un a t'il une idée?
un ControlClick peu etre?
Merci
Re: [R]Remplacer un Case par une autre fonction
Posté : jeu. 14 févr. 2008 07:35
par Tlem
Vins83 a écrit :Donc,si j'ai çà,c faut,je peux quitter,mais ma boucle ne se ferme pas
Code : Tout sélectionner
Run("cleanmgr.exe /dc /sagerun:1")
While 1
$msg = GUIGetMsg()
Select
; Quitter
Case $msg = $bouttonquitter
ProcessClose("cleanmgr.exe")
Exit
If ProcessExists("cleanmgr.exe") Then ContinueLoop
If Not ProcessExists("cleanmgr.exe") Then ExitLoop
EndSelect
WEnd
Votre code n'est pas correct et ne peut fonctionner tel quel.
Vous avez mis ceci :
Code : Tout sélectionner
If ProcessExists("cleanmgr.exe") Then ContinueLoop
If Not ProcessExists("cleanmgr.exe") Then ExitLoop
dans le case, mais après le Exit. Donc il ne peut jamais être exécuter !!!
Rajoutez 'Case Else', et mettez ce code dedans.
Conseil technique :
Vous tester le process par son nom, alors que vous utilisez la fonction
Run !!!
Il serait plus judicieux de récupérer le PID, et de gérer les conditions avec.
Code : Tout sélectionner
$PID = Run("cleanmgr.exe /sagerun:1")
While 1
$msg = GUIGetMsg()
Select
; Quitter
Case $msg = $bouttonquitter
ProcessClose($PID)
Exit
...
...
J'ai aussi déjà signalé sur mon post précédent, que d'après Microsoft, le commutateur /D n'est pas utilisé si on utilise /sagerun:n