[R] Remplacer un Case par une autre fonction

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

[R] Remplacer un Case par une autre fonction

#1

Message 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
Avatar du membre
eln
Niveau 6
Niveau 6
Messages : 202
Enregistré le : sam. 28 juil. 2007 12:54
Status : Hors ligne

Re: [..]Remplacer un Case par une autre fonction

#2

Message 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
Débutant, pas taper !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..]Remplacer un Case par une autre fonction

#3

Message 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
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é".
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

Re: [..]Remplacer un Case par une autre fonction

#4

Message 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...
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

Re: [..]Remplacer un Case par une autre fonction

#5

Message 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..
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

Re: [R]Remplacer un Case par une autre fonction

#6

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R]Remplacer un Case par une autre fonction

#7

Message 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
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é".
Répondre