[R] Pourquoi ces lignes s'éxécutent quand elles sont seules

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
MissTi
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 18 févr. 2008 16:31
Status : Hors ligne

[R] Pourquoi ces lignes s'éxécutent quand elles sont seules

#1

Message par MissTi »

Bonjour,
Depuis 1 semaine que je bosse sur un script, il y a quelque chose que je ne comprend pas.

Le script suivant, lorsqu'il est seul, s'exécute sans problèmes:

Code : Tout sélectionner

WinWait("MapInfo Professional","")
    WinMenuSelectItem("MapInfo Professional","","&Vertical Mapper","Show Grid Manager")
    WinWait("Grid Manager","")
    WinActivate("Grid Manager","")
    WinWaitActive("Grid Manager","")
La fenêtre "Grid Manager" apparaît.

Si j'inclue ce script dans un autre script, cette fenêtre "Grid manager" n'apparaît plus. :shock: :shock:

Code : Tout sélectionner

    ....
    WinActivate("MapInfo Professional","")
    if winexists("Démarrage", "") then     ControlClick("Démarrage", "", "Button7")
    ; on tente de lancer la fenêtre Grid Manager...
    WinWait("MapInfo Professional","")
    WinActivate("MapInfo Professional","")
    WinMenuSelectItem("MapInfo Professional","","&Vertical Mapper","Show Grid Manager")
    WinWait("Grid Manager","")
    WinActivate("Grid Manager","")
    WinWaitActive("Grid Manager","")
    .....
C'est l'horreur car ça m'empêche de continuer. Quelqu'un saurait m'expliquer cette différence d'exécution?
Modifié en dernier par MissTi le lun. 14 avr. 2008 14:23, modifié 1 fois.
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: Pourquoi ces lignes s'éxécutent quand elles sont seules?

#2

Message par moutelous »

Bonjour,

En supposant que le

Code : Tout sélectionner

EndIf
se trouve après

Code : Tout sélectionner

WinWaitActive("Grid Manager","")
(sinon c'est une faute de syntaxe), êtes vous sûr que la condition du If est bien vérifiée ? C'est à dire entre-t-on bien dans la boucle ?

A+
A+
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: Pourquoi ces lignes s'éxécutent quand elles sont seules?

#3

Message par moutelous »

Re,

Oups , lecture trop rapide, il n'y a bien sûr pas de faute faute syntaxe dans ce cas là ....

A+
A+
MissTi
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 18 févr. 2008 16:31
Status : Hors ligne

Re: Pourquoi ces lignes s'éxécutent quand elles sont seules?

#4

Message par MissTi »

il n'y a bien sûr pas de faute faute syntaxe dans ce cas là ...
Moutelous, as-tu une idée sur mon problème?
Parce que je suis bien embêtée...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Pourquoi ces lignes s'éxécutent quand elles sont seules

#5

Message par Tlem »

Je dirais que cette ligne est de trop :

Code : Tout sélectionner

; on tente de lancer la fenêtre Grid Manager...
    WinWait("MapInfo Professional","")  ; <= Celle-ci
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
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Pourquoi ces lignes s'éxécutent quand elles sont seules

#6

Message par moutelous »

Yes TLem, on pourrait avoir ce genre de réflexion à la vue des messages précédents, mais bon logiquement et fonctionnellement cela n'a aucun sens. Si néanmoins ton hypothèse est vérifié il y a un vrai bug !

A+
A+
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Pourquoi ces lignes s'éxécutent quand elles sont seules

#7

Message par Tlem »

Effectivement, après quelques essais avec le bloc note, ce ne peut pas être ça !
Dans ce cas une autre chose qui peut poser problème c'est cette ligne :

Code : Tout sélectionner

    if winexists("Démarrage", "") then     ControlClick("Démarrage", "", "Button7")
 
a vérifier ...
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é".
MissTi
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 18 févr. 2008 16:31
Status : Hors ligne

Re: [..] Pourquoi ces lignes s'éxécutent quand elles sont seules

#8

Message par MissTi »

J'ai fini par faire autrement:

Code : Tout sélectionner

Send("{ALTDOWN}v{ALTUP}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}")
Je n'y avait pas pensé avant (ça va rentrer tout ça.... ça rentre petit à petit...)

Par contre, j'ai bien noté vos remarques sur les WinWait()
logiquement et fonctionnellement cela n'a aucun sens.
.
J'avoue que j'ai un peu de mal à comprendre quand mettre tous les WinQuelquechose, même si je comprend ce à quoi ils servent:
WinWait(): attendre que la fenêtre existe.
WinExists(): la fenêtre existe-t-elle?
WinWaitActive(): Attendre que la fenêtre soit active
WinActivate(): rendre active la fenêtre
WinActive(): la fenêtre est-t-elle active?
Vaut-il mieux :

Code : Tout sélectionner

    WinWait("Grid Manager","")
    If Not WinActive("Grid Manager","") Then WinActivate("Grid Manager","")
    WinWaitActive("Grid Manager","")
ou

Code : Tout sélectionner

    WinWait("Grid Manager","")
    If Not WinActive("Grid Manager","") Then WinActivate("Grid Manager","")
    WinWait("Grid Manager","")

Faut-il activer une fenêtre pour utiliser son menu ou ses contrôles?

(Je sais que tout ça se sont des questions de bases, mais une fois ça compris, ça ira mieux...)
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Pourquoi ces lignes s'éxécutent quand elles sont seules

#9

Message par tolf »

Je ne sais pas si le problème vient de là mais je viens moi-même d'essayer un script qui doit activer une fenêtre avec :

Code : Tout sélectionner

WinActivate("mon_titre en entier")
et je n'ai pas réussir à rendre ma fenêtre active (j'avais pourtant mis le titre exact de la fenêtre et j'ai vérifié en utilisant l'exemple de la fonction WinList).
Il y a donc peut-être un problème de titres qui ne marchent pas (dans mon cas il y avait un espace dans le titre : peut-être que ça a un rôle dans l'affaire ?)
Dans ce cas essayez de mettre cette ligne au début du script :

Code : Tout sélectionner

Opt("WinTitleMatchMode", 2)
Cela permet de choisir l'option "Match any substring in the title", ce qui veut dire qu'il suffit de mettre une partie du titre de la fenêtre pour que ça marche (c'est valable pour toutes les fonctions WinQuelquechose) :

Code : Tout sélectionner

WinActivate("mon_titre")
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Répondre