Comment obtenir des textes en utilisant ListBox AutoIt
-
02-10-2019 - |
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
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")