Question

J'utilise AutoIt pour créer une application d'installation automatique. Il y a une boîte de dialogue qui contient un contrôle ListBox, et dans la liste il y a des choix pour l'utilisateur (les choix détaillés dépend de la machine de l'utilisateur. Pour certains utilisateurs, il peut-être qu'un seul choix, pour certains utilisateurs, il peut y avoir trois choix, etc.) , donc je veux les textes dans la zone de liste pour prendre la décision. J'ai essayé le code suivant, mais ça n'a pas marché.

; 2223 is the ID of listbox

$txt = ControlGetText("Select Web Site", "", "[ID:2223]")
Msgbox(0, "", $txt)

Après l'exécution $txt est nulle.

Alors que dois-je faire pour obtenir les textes Listbox?

Voici l'attribut de la zone de liste surveillée par AutoIt v3 fenêtre Info :

Class: WindowsForms10.Listbox.app.0.33c0d9d
Était-ce utile?

La solution 4

Ce que je veux faire est de sélectionner l'un des éléments nommés « par défaut du site Web » dans la liste, mais il semble que le contenu de la liste ne peut pas être obtenu, alors finalement j'ai essayé une autre façon:

Au début, je fais concentré la zone de liste, puis je choisis l'option « Default Web Site » en envoyant « Def »:

ControlFocus($Title, "", "[NAME:lbWebSites]")
; Select the option "Default Web Site", so press "def" to set the desired item.
Send("Def")

Autres conseils

J'ai trouvé la commande « Envoyer » peu fiables à l'occasion, en particulier si le PC est verrouillé.

« ControlSend » a toujours travaillé pour obtenir les frappes où je les veux.

J'ai écrit un test pour vérifier si un article était dans une zone de liste déroulante. Il pourrait y avoir des fonctions similaires pour les zones de liste à l'aide GuiComboBox.au3.

Func DoesItemExistInComboBox($windowtitle, $windowtext, $comboboxcontrol, $itemtocheck)
    $returnvalue = 0
    $ComboBoxHandle = ControlGetHandle($windowtitle, $windowtext, $comboboxcontrol)
    $ComboBoxArray = _GUICtrlComboBox_GetListArray($ComboBoxHandle)
    For $i = 0 TO UBound($ComboBoxArray)-1
        If $ComboBoxArray[$i] = $itemtocheck Then
           $returnvalue = 1
        EndIf
    Next
    return $returnvalue
EndFunc

Qu'en est-il:

ControlCommand("My GUI", "", "[CLASS:ListBox; INSTANCE:1]", "SelectString", "item2")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top