[..] Fonction d'automatisation sur un bouton

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

[..] Fonction d'automatisation sur un bouton

#1

Message par ayekt »

Bonjour à tous !

Nouveau sur ce forum et dans l'utilisation d'autoit je sollicite votre aide sur une syntaxe.
J'utilise la fonction "controlclick" pour tenter de cliquer sur un bouton situé dans l'interface de Sage (logiciel compta).
Voici la commande en question.

Code : Tout sélectionner

ControlClick("Liaison externe: Ecritures Logiwin.mma", "", "[CLASS:ToolbarWindow32; INSTANCE:1; CommandID:1153]")
Et voici l'image avec le bouton (exporter) sur lequel je veux cliquer.

Image

Bien sûr ma commande ne fonctionne pas et j'ai utilisé Autoit window info pour avoir les informations sur le bouton "exporter".

Pouvez-vous m'aider ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#2

Message par Tlem »

Lorsque vous survolé le bouton "exporter" avec Autoit Window Info, est-ce que les informations changes d'un bouton à l'autre ?
Si oui, pouvez-vous afficher une capture de la fenêtre Autoit Window Info ?
Avez-vous essayez avec la classe, ou tout autres éléments à votre disposition ?
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é".
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#3

Message par ayekt »

Tlem a écrit :Lorsque vous survolez le bouton "exporter" avec Autoit Window Info, est-ce que les informations changes d'un bouton à l'autre ?
Non. Il ne me reconnait pas de bouton. Mais à la place, une barre d'outils. Ci-joint capture de l'onglet "control".

Image
Tlem a écrit :Si oui, pouvez-vous afficher une capture de la fenêtre Autoit Window Info ?
Je met ici la capture de l'onglet "toolbar" qui affiche le Command ID de chaque boutons. Le problème c'est que je ne sais pas trop comment utiliser ces Command ID

Image
Tlem a écrit :Avez-vous essayé avec la classe, ou tout autres éléments à votre disposition ?
J'ai essayé pas mal de commandes, sans doute avec des erreurs vu mon niveau. Ce que je peux dire c'est que j'utilisais la fonction "ControlClick" en changeant quelques syntaxes.
Et dernièrement je me suis inspiré du dernier post de ayuckers sur ce topic

Voici les commandes testées :

Code : Tout sélectionner

ControlCommand("[CLASS:Compta]", "", "ToolbarWindow32", "SendCommandID", 1153)

Code : Tout sélectionner

ControlCommand("Sage 100 Comptabilité - RELAIS ROUMEGOUSEV1550bak.mae - Exercice 2010", "Compta", "ToolbarWindow321", "SendCommandID", 1153)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#4

Message par Tlem »

L'utilisation que vous faites de ControlCommand ne peut pas fonctionner, car au lieu d'envoyer la commande du clic, vous envoyez "SendCommandID", donc forcément ... :roll:

Je ne peut pas tout tester pour vous, mais commencez par ceci :

Code : Tout sélectionner

ControlClick("[CLASS:Compta]",, "", "[ID:254]")
Maintenant, en accord avec ce qui est dit sur ce lien http://www.autoitscript.fr/autoit3/docs ... vanced.htm vous pouvez pour affiner la recherche du contrôle à cliquer, utiliser plusieurs propriétés comme ceci :

Code : Tout sélectionner

[PROPERTY1:Value1; PROPERTY2:Value2]


Bon code. ;)
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é".
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#5

Message par ayekt »

J'ai essayé directement votre commande

Code : Tout sélectionner

ControlClick("[CLASS:Compta]",, "", "[ID:254]")
Elle ne fonctionne pas. J'avais déjà essayé plusieurs manipulation avec ControlClick, sans succès. Par ailleurs d'où sortez vous l'ID 254 ? Je l'ai repris, mais vu que ça ne fonctionnait pas j'ai utilisé le Command ID 1153(onglet toolbar) puis l'ID 65533 (onglet control), sans succès.

Je comprend mal également les propriétés que vous avez citées. A quelle valeur correspond "Value1" ?

Merci pour l'encouragement, j'ai les yeux qui piquent ! :shock:
Nilak
Niveau 4
Niveau 4
Messages : 57
Enregistré le : mar. 25 mai 2010 21:29
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#6

Message par Nilak »

Quand j'avais fait des recherches pour cliquer sur une toolbar j'avais trouvé ça:

Code : Tout sélectionner

 
ControlCommand("[i]Titre de la fênetre[/i]", "","ToolbarWindow321","SendCommandID",1153
 
Ca avait résolu mon souci.
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#7

Message par ayekt »

C'est la même commande qu'il y a dans ce post que j'ai relayé juste au dessus.

J'ai testé (correctement je pense) et ça n'a pas marché.
Voici ce que j'avais mis :

Code : Tout sélectionner

ControlCommand("[CLASS:Compta]", "", "ToolbarWindow32", "SendCommandID", 1153)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#8

Message par Tlem »

ayekt a écrit :d'où sortez vous l'ID 254 ?
Heuuu, oui, j'ai fumé un peut la moquette. :oops:
C'est bien 1153 qu'il faut prendre. ;)
ayekt a écrit :Je comprend mal également les propriétés que vous avez citées. A quelle valeur correspond "Value1" ?
Tout est dans le lien que je vous ait donné.
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é".
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#9

Message par ayekt »

Voici ce que j'ai tenté de faire :

Code : Tout sélectionner

ControlClick("[CLASS:Compta]",, "[ToolbarWindow321]", "[ID:1153]")

Code : Tout sélectionner

ControlClick("[CLASS:Compta]",, "[ToolbarWindow32]", "[ID:1153]")

Code : Tout sélectionner

ControlClick("[CLASS:Compta]",, "["mon titre de la fenêtre"]", "[ID:1153]")
Est-ce moi qui ne comprend pas ?
J'avoue que je me perd entre toutes ces commandes depuis le début. Je n'ai plus mon repère de base. Dois-je garder celle ci-dessus ?
Modifié en dernier par ayekt le mer. 05 janv. 2011 08:11, modifié 1 fois.
Nilak
Niveau 4
Niveau 4
Messages : 57
Enregistré le : mar. 25 mai 2010 21:29
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#10

Message par Nilak »

Edit lu trop vite votre dernière tentative dans le premier message!

Même si dans le message où vous me répondez il est normal que ça ne fonctionne pas vu qu'il manque le 1!
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#11

Message par Tlem »

Whahouu. J'avoue ne pas comprendre votre méthode d'interprétation de ceci :
Description Avancée des Fenêtres

Une description spéciale peux être utilisée comme paramètre de titre de la fenêtre. Cette description peux être utilisée pour identifier la fenêtre par les propriétés suivantes :

* TITLE - Le titre de la fenêtre
* CLASS - Le nom de la class interne à window (classname)
* REGEXPTITLE -cLe titre de la fenêtre en utilisant une expression régulière (Si l'expression régulière est fausse alors @error sera fixé à 2)
* REGEXPCLASS - Classname d'une fenêtre utilisant une expression régulière
* LAST - La dernière fenêtre utilisée dans une commande précédente de AutoIt
* ACTIVE - La fenêtre courrante active
* X \ Y \ W \ H - La position et la taille d'une fenêtre.
* INSTANCE - La première instance lorsque toutes les propriétées correspondes

Une ou plusieurs propriétés peuvent être utilisées comme paramètre titre d'une commande de fenêtre comme ceci :

Code : Tout sélectionner

[PROPERTY1:Value1; PROPERTY2:Value2]
Si une valeur doit contenir un ";" il doit être doublé.
Mais bon, nous allons essayer d'y aller en douceur.

Dans le texte ci-dessus, je vous ai mis une partie du texte en rouge.
Cette partie vous indique que ce qui suit est une liste de propriétés soit PROPERTY en Anglais ... Voyez-vous ou je veux en venir. :roll:

Donc, vous l'avez comprit, CLASS tout comme TITLE, REGEXPTITLE, ..., INSTANCE sont des propriétés.

Donc quand dans le texte vous voyez :

Code : Tout sélectionner

[PROPERTY1:Value1; PROPERTY2:Value2]
Il vous faut bien évidement remplacer le mot PROPERTYx par la propriété à rechercher. :mrgreen:

Ce qui permet d'arriver à ceci :

Code : Tout sélectionner

[CLASS:ToolbarWindow32; INSTANCE:1]
Edit : D'ailleur dans la première image de votre message http://www.autoitscript.fr/forum/viewto ... 685#p41685 , si vous regardez la ligne Advanced mode, vous retrouvez ce que je viens de vous expliquer. 8)
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é".
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#12

Message par ayekt »

Votre explication est très claire.

De mon côté voici finalement ce que j'ai testé avec vos informations sans que l'automatisation fonctionne pour autant :

Code : Tout sélectionner

ControlClick("[CLASS:Compta]",, "[CLASS:ToolbarWindow32; INSTANCE:1]", "[ID:1153]")
A l'aide de la documentation anglaise sur le la commande "ControlCommand" avec "SendCommandID" (http://www.autoitscript.com/autoit3/doc ... ommand.htm) j'ai également essayé cette commande :

Code : Tout sélectionner

ControlCommand("[CLASS:Compta]", "SendCommandID", 1153)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#13

Message par Tlem »

ControlCommand peut sans doute fonctionner, mais il faudrait l'utiliser correctement. :roll:

Code : Tout sélectionner

ControlCommand ( "title", "text", controlID, "command" [, "option"] )
- Title : doit être le titre de la fenêtre (ou classe ou handle, etc ...)
- Text : Pas indispensable (si utilisation classe, handle ou autre)
- ControlID : L'identifiant du contrôle. Et là en l'occurence c'est votre ToolbarWindow32. Donc ici vous pouvez utiliser [CLASS:ToolbarWindow32; INSTANCE:1].
- Command : Comme expliqué dans la doc, vous pouvez utiliser SendCommandID puisque cela concerne un contrôle ToolbarWindow32.
- Option : L'ID du bouton => 1153
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é".
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#14

Message par ayekt »

Ce que je trouve bizarre c'est qu'il me demande tout de même des guillemets pour le ControlID.

Voici ma commande :

Code : Tout sélectionner

ControlCommand( "0x027A04C6", "", "[CLASS:ToolbarWindow32; INSTANCE:1]", "SendCommandID" [, "1153"] )
quelque chose cloche encore ?
En title j'ai également mis la classe, sans succès...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#15

Message par Tlem »

La fin de la commande ne peut pas être bonne.

Ce devrait être : "1153" ou au pire "[1153]" mais pas [, "1153"]. :roll:
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é".
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#16

Message par ayekt »

Voici la commande :

Code : Tout sélectionner

ControlCommand("[CLASS:Compta]", "", "[CLASS:ToolbarWindow321; INSTANCE:1]", "SendCommandID", "1153")
Cette dernière n'automatise toujours pas l'appui sur le bouton.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#17

Message par Tlem »

Pourquoi modifier certains éléments de base ???

ToolbarWindow321 veut dire ToolbarWindow32 instance 1
Et puis de toute façon, à ce stade, je ne peut vous aider plus. Je n'ai pas ce logiciel pour tester et il est bien dit dans la doc que parfois certains contrôles ne sont pas automatisables.
Vous avez tout les éléments pour trouver une solution si elle existe. Maintenant, il faut passer du temps. :roll:

Au cas ou cela serait possible et que vous n'y auriez pas pensé, n'existe t-il pas une combinaison de touches pour faire cette action ?
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é".
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#18

Message par ayekt »

ToolbarWindow321 est une erreur de ma part. Désolé.

Je vais me renseigner afin de savoir si une combinaison de touches existe. Dans ce genre de cas, généralement il y en a pour afficher des outils qui se trouvent dans les menus basiques de l'application (fichier, outils, affichage...).
Mais cette fenêtre est bien spécifique et ne peut pas être appelée via un menu existant. Je vais quand engager des recherches. Merci du conseil.

Je vous remercie grandement de l'aide et du temps accordé à m'aider malgré mes piètres compétences dans ce domaine. Avec toutes les éléments en ma possession et de vos précieux conseils, je vais pouvoir faire en sorte d'automatiser cette tâche si cela reste possible comme vous dites.

Mais si c'est vraiment impossible, y'a t'il un moyen d'en être sûr ?
ayekt
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mer. 29 déc. 2010 17:48
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#19

Message par ayekt »

La commande fonctionne !

Une erreur s'était glissée plus haut qui empêchait justement cette commande de s'exécuter.
En revanche, juste après, une commande "send" ne veut pas se lancer. J'ai essayé de donner le focus à cette fenêtre sans succès.

Code : Tout sélectionner

Run("C:\Program Files\Maestria\Maestria.exe", "", @SW_MAXIMIZE)
WinWaitActive("Sage 100 Comptabilité")
Sleep(2000)
Send("{ALT}")
Send("fo")
WinWaitActive("Ouvrir le fichier comptable")
Sleep(2000)
Send("relais roumegousev1550bak.mae")
Send("{ENTER}")
Sleep(2000)
Send("{ALT}")
Send("fxs")
WinWaitActive("Ouvrir le modèle d'export")
Sleep(2000)
Send("ecritures logiwin.mma")
Send("{ENTER}")
Sleep(3000)
ControlCommand("[CLASS:Compta]", "", "[CLASS:ToolbarWindow32; INSTANCE:1]", "SendCommandID", "1153")
Sleep(2000)
[color=#FF0000]Send("ECR_GOUR.txt")[/color]
Send("{ENTER}")
Sleep(2000)
ControlClick("Créer le fichier d'export", "&Oui", 6)
Sleep(5000)
ControlClick("Liaison externe: Ecritures Logiwin.mma", "Fermer", "[CLASS:Button; INSTANCE:1;]")
Send("{ALT}")
Send("fq")
Send("{BREAK}")
 
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fonction d'automatisation sur un bouton

#20

Message par Tlem »

C'est pas très simple de pouvoir vous aider, car il faudrait avoir les mêmes conditions de tests ! :roll:

Pour votre cas, essayez de repérer avec AutoIt Windows Info les renseignements du champs de saisie et simulez un clic dans la zone avant d'envoyer le texte. ;)
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