[R] Syntaxe correcte pour la fonction ControlListView

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ghostdog
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mar. 06 août 2013 18:43
Localisation : Donibane Lohizune
Status : Hors ligne

[R] Syntaxe correcte pour la fonction ControlListView

#1

Message par ghostdog »

Bonsoir à tous.

Je suis en train d'écrire un script d'automatisation d'installation d'imprimante sous Windows 7. Des scripts qui font cela, il y en a des tonnes. Mais celui que je réalise est très basic et se contente d'utiliser l'assistant d'ajout d'une imprimante.

Pour l'instant mon code ressemble à ça :

Code : Tout sélectionner

; Lancement de l'assistant d'ajout d'imprimante
Run("rundll32 printui.dll,PrintUIEntry /il")

; Choisir entre une imprimante locale ou réseau
WinWaitActive( "Ajouter une imprimante", "")
    ControlClick ("Ajouter une imprimante", "A&jouter une imprimante locale", 3510); Click sur Ajouter une imprimante locale>
    
; Choisir le port de l'imprimante
WinWaitActive( "Ajouter une imprimante", "")
    ControlCommand("Ajouter une imprimante", "", "[CLASS:ComboBox; INSTANCE:1]", "SelectString", "TCP_10.0.0.50 (Port TCP/IP standard)"); Va chercher le port spécifié>
    Send("!S"); Click sur Suivant>
 
OK c'est pas grand chose mais c'est MON code et j'en suis pas peu fier si je considère le temps qu'il m'a fallut pour en arriver là en travaillant dans le train ...

Bref, ce script m'amène à la fenêtre suivante :

Image

Comme vous pouvez le voir, cette fenêtre contient deux listes. Il faut que je sélectionne la marque de l'imprimante à gauche et le modèle à droite. Je pense que le code nécessaire à cette action passe par la fonction ControListView.

Voici les informations que j'obtiens avec AWI pour la liste de gauche :

Image

Et voici le code que j'ai tenté d'écrire selon la doc et ce que je crois en avoir compris :

Code : Tout sélectionner

ControlListView( "Ajouter une imprimante", "", 1580, Select From "KONIKA MINOLTA" to "KONIKA MINOLTA")
Mais bien sûr, ça plante parce que ma syntaxe est incorrecte. Comment doit-je agencer les paramètres dans la fonction ?

Par avance Merci.

GhostDog
Modifié en dernier par ghostdog le mer. 07 août 2013 22:00, modifié 1 fois.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Syntaxe correcte pour la fonction ControlListView

#2

Message par ani »

ControlListView( "Ajouter une imprimante", "", 1580, Select, "KONIKA MINOLTA","KONIKA MINOLTA")

titre = Ajouter une imprimante
texte = rien
ID du contrôle = 1580
Commande/Fonction = select
option1 = (From) KONIKA MINOLTA
option2 = (to) KONIKA MINOLTA

tu ne doit pas noté les options mais juste leur valeur ;)

bienvenu et bonne continuation dans l'apprentissage.
ghostdog
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mar. 06 août 2013 18:43
Localisation : Donibane Lohizune
Status : Hors ligne

Re: [..] Syntaxe correcte pour la fonction ControlListView

#3

Message par ghostdog »

Merci pour cette réponse rapide !

Ce code ne fonctionne pas mais je crois avoir compris pourquoi grâce à tes corrections. En effet, en regardant dans les exemples, je n'ai pas trouvé l'action select mais deselect :

Code : Tout sélectionner

ControlListView(@ProgramFilesDir & "\AutoIt3", "", "SysListView321", "Deselect", 2, 5)
Comme tu peux le voir, les derniers arguments sont des chiffres mais pas des chaines de caractères. J'en conclu qu'on ne sélectionne pas une expression mais une position. Ceci complique un peu mon travail. Je vais devoir transférer le contenu de la liste dans un tableau (dans mes précédentes recherches j'ai vu du code dans ce genre), chercher la position de l'expression qui m'intéresse et intégrer cette prosition dans le fonction ControlListView.

Bref, j'ai un peu de pain sur la planche mais j'aime bien ce défit.

Est-ce que je marque le sujet comme résolu ou bien est-ce que je le fais quand j'aurais posté une solution ?

En tout cas merci, ça avance.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Syntaxe correcte pour la fonction ControlListView

#4

Message par mikell »

Code : Tout sélectionner

$index = ControlListView( "Ajouter une imprimante", "", "[CLASS:SysListView32; INSTANCE:1]", "FindItem", "KONIKA MINOLTA")
ControlListView( "Ajouter une imprimante", "", "[CLASS:SysListView32; INSTANCE:1]", "Select", $index)
:wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
ghostdog
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mar. 06 août 2013 18:43
Localisation : Donibane Lohizune
Status : Hors ligne

Re: [..] Syntaxe correcte pour la fonction ControlListView

#5

Message par ghostdog »

:shock: :shock: :shock: :shock:

Ha ouais ... Tu as décidé de la jouer petit bras ! C'est trop facile !

Moi j'ai carrément réinventer la recette des glaçons !

Mate un peu ce code de malade :mrgreen: :

Code : Tout sélectionner

Local $marque = "KONICA MINOLTA" ; marque voulue
Local $marquelue = "" ; la marque si sera lue en scrutant la liste des marques
Local $model = " " ; Le modèle voulu
Local $modellu = " " ; Le modèle qui sera lu en scrutant la liste des modèles
Local $posmarque = 0 ; position de la marque dans la liste
Local $posmodel =0 ; position du modèle dans la liste

Sleep(5000) ;5 secondes le temps que Windows constitue la liste

While Not ($marquelue == $marque)
    $marquelue = ControlListView( "Ajouter une imprimante", "", 1580, "GetText", $posmarque, 0)
    $posmarque += 1
WEnd
 
Et là, mon $posmarque est l'équivalent de ton $index ! Ouais je sais je suis impressionnant. Mais je vais quand même utiliser ta solution. :roll:

Merci.
Répondre