[R][..] Importer automatiquement un carnet d'adresses

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
domdom74
Niveau 1
Niveau 1
Messages : 5
Enregistré le : dim. 13 déc. 2009 07:50
Status : Hors ligne

[R][..] Importer automatiquement un carnet d'adresses

#1

Message par domdom74 »

Bonjour,

Grâce à un script, je lance Thunderbird, puis les items Outils/Importer/Carnet d'adresses/Outlook Express. Jusque là, tout va bien... :D

Le problème, c'est que la durée de l'import est notamment fonction du nombre d'adresses à importer, et donc cette durée n'est pas évidente à calculer d'avance et à intégrer dans un sleep () avant de fermer la fenêtre et de pousuivre le traitement.

Ma question est la suivante : sauriez-vous comment fermer automatiquement la fenêtre reproduite ci-dessous à la fin de l'import du carnet d'adresses (quelle que soit sa durée ) :?:

Merci d'avance pour votre aide, et bien cordialement.

Dominique.
Fichiers joints
AutoIt.jpg
Modifié en dernier par domdom74 le dim. 27 déc. 2009 11:23, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Importer automatiquement un carnet d'adresses

#2

Message par Tlem »

Bonjour.
Normalement la fonction WinWait() doit convenir parfaitement.

Cela devrait ressembler à ceci :

Code : Tout sélectionner

WinWait ("Importer" , "Terminer")
ou alors
WinWait ("Importer" , "Outlokk Express importé")
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é".
domdom74
Niveau 1
Niveau 1
Messages : 5
Enregistré le : dim. 13 déc. 2009 07:50
Status : Hors ligne

Re: [..] Importer automatiquement un carnet d'adresses

#3

Message par domdom74 »

Tlem a écrit :Bonjour.
Normalement la fonction WinWait() doit convenir parfaitement.

Cela devrait ressembler à ceci :

Code : Tout sélectionner

WinWait ("Importer" , "Terminer")
ou alors
WinWait ("Importer" , "Outlokk Express importé")
Bonsoir, et merci de ta réponse :D

Winwait ou encore WinWaitActive, j'avais déjà essayé, sans succès !

Je ne pense pas (mais je peux me tromper) qu'il y ait un texte "à récupérer" dans la fenêtre autre que son titre ("Importer"). D'ailleurs, avec Au3Info, la valeur "Text" ne renvoie rien (dans l'onglet summary) et in fine, je me demande si cela est possible...

J'ai essayé aussi de détecter la fin de la barre de progression qui s'affiche lors de l'import, mais mes connaissances d'AutoIt étant encore balbutiantes, j'ai du renoncer :(

Amha, le seul code qui fonctionne dans tous les cas (indépendamment de la durée de l'import), c'est de mettre un SplashTextOn invitant l'utilisateur à cliquer sur le bouton "Terminer" lorsque ce dernier est affiché, ce qui permettra de lancer le traitement suivant.

Ce n'est certes pas un gros effort à fournir..., j'en conviens aisément, mais j'aurais bien aimé une procédure ENTIEREMENT automatisée, dispensant l'utilisateur d'une quelconque action en dehors du click initial sur l'exécutable.

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

Re: [..] Importer automatiquement un carnet d'adresses

#4

Message par Tlem »

Il m'a donné du fil à retordre, mais j'ai trouvé une solution.
Vous pouvez vous baser sur le contrôle de la fenêtre.
Si vous regardez avec AutoItWindowsInfo, vous verrez que la deuxième et la dernière fenêtre de l'importation ont pour point commun :
CLASS : MozillaWindowClass
INSTANCE : 3

Donc si vous lancez une boucle de recherche du contrôle au bon moment, cela marchera.
Voici un code qui m'a permis de tester (par contre, prenez soin de laisser la fenêtre Mozilla en avant plan) :

Code : Tout sélectionner

#include<array.au3>

While 1
    $Cord = ControlGetPos("", "", "[CLASS:MozillaWindowClass; INSTANCE:3]")

    If IsArray($Cord) Then
        MsgBox(0, '', '[CLASS:MozillaWindowClass; INSTANCE:3] trouvé')
        ExitLoop
    EndIf

    Sleep(500)
WEnd
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é".
domdom74
Niveau 1
Niveau 1
Messages : 5
Enregistré le : dim. 13 déc. 2009 07:50
Status : Hors ligne

[R]Re: [..] Importer automatiquement un carnet d'adresses

#5

Message par domdom74 »

Bonjour,

Grâce à l'aide de Thierry, mon problème est résolu.

Voici le code final :

Code : Tout sélectionner

#include<array.au3>
dim $cord
While 1
    $Cord = ControlGetPos("", "", "[CLASS:MozillaWindowClass; INSTANCE:3]")

    If IsArray($Cord) Then
        ;MsgBox(0, '', '[CLASS:MozillaWindowClass; INSTANCE:1] trouvé')
Send ("{ENTER}")
        ;ExitLoop
    EndIf

    Sleep(500)
WEnd
Un grand merci pour ta disponibilité et tes compétences :D :D :D

Bien amicordialement,

Dominique.
Répondre