Page 1 sur 1

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

Posté : dim. 13 déc. 2009 09:14
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.

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

Posté : dim. 13 déc. 2009 10:41
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é")

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

Posté : dim. 13 déc. 2009 19:16
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.

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

Posté : dim. 13 déc. 2009 20:48
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

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

Posté : lun. 14 déc. 2009 06:28
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.