Как получить текст в ListBox с помощью AutoIt - PullRequest
1 голос
/ 04 мая 2010

Я использую AutoIt для создания приложения с автоматической установкой. Существует диалоговое окно, содержащее элемент управления ListBox, и в списке есть несколько вариантов для пользователя (подробный выбор зависит от компьютера пользователя. Для некоторых пользователей может быть только один выбор, для некоторых пользователей может быть три варианта и т. Д.) поэтому я хочу получить текст в списке, чтобы принять решение. Я пробовал следующий код, но он не работал.

; 2223 is the ID of listbox

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

После выполнения $txt равно нулю.

Так, что я должен сделать, чтобы получить тексты в Listbox?

Вот атрибут списка, отслеживаемый Информация об окне AutoIt v3 :

Class: WindowsForms10.Listbox.app.0.33c0d9d

Ответы [ 4 ]

1 голос
/ 20 июня 2013

Я написал тест, чтобы проверить, был ли элемент в поле со списком. Могут быть аналогичные функции для списков, использующих 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
1 голос
/ 08 декабря 2010

Я обнаружил, что команда «Отправить» иногда ненадежна, особенно если компьютер заблокирован.

'ControlSend' всегда работал, чтобы получить нажатия клавиш там, где я хочу.

0 голосов
/ 24 октября 2011

А как же:

ControlCommand("My GUI", "", "[CLASS:ListBox; INSTANCE:1]", "SelectString", "item2")
0 голосов
/ 20 мая 2010

Что я хочу сделать, это выбрать один из элементов с именем «Веб-сайт по умолчанию» в списке, но кажется, что содержимое списка не может быть получено, поэтому в конце концов я попробовал другой способ:

Сначала я фокусирую список, а затем выбираю пункт «Веб-сайт по умолчанию», отправляя «Def»:

ControlFocus($Title, "", "[NAME:lbWebSites]")
; Select the option "Default Web Site", so press "def" to set the desired item.
Send("Def")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...