Neldezheil
B like Bee
- Сообщения
- 27
- Репутация
- 3
Возникла необходимость автоматизировать работу с элементом, известным как ListBox (на форме отображается, как список с полосой прокрутки).
Сам из себя данный элемент отображает массив строк, доступ к которым осуществляется через индексы данного массива.
Проблема в том, что данный список расположен html странице в окне обозревателя. (к сожалению, ссылку на страницу дать не могу, т.к. он находится в локальной корпоративной сети).
Вот пример из мануалов, немного переделанный, но по-прежнему не рабочий (форму создает, но при клике на элемент в списке вываливается ошибкой)
Насколько я понимаю, для обработки существующего списка нужно вытащить его handle, вытащить его через AutoIT Window Info не совес получается, ибо не могу придумать, как именно вернуть handle и не понимаю, что в итоге оказывается в переменной $listbox из примера. Вывод содержимого переменной в консоль не особо помогает, т.к. возвращается значение "3". По идее, это ControlID, но при обращении к нему через функцию _GuiCtrlListBox_GetCount возвращается 0, т.е. список как бы пустой.
Вот скрин Window Info с инфой по контролу
http://narod.ru/disk/20414766000/3.JPG.html
Сам из себя данный элемент отображает массив строк, доступ к которым осуществляется через индексы данного массива.
Проблема в том, что данный список расположен html странице в окне обозревателя. (к сожалению, ссылку на страницу дать не могу, т.к. он находится в локальной корпоративной сети).
Вот пример из мануалов, немного переделанный, но по-прежнему не рабочий (форму создает, но при клике на элемент в списке вываливается ошибкой)
Код:
#include <GUIConstants.au3>
#include <GuiListBox.au3> ; изначально в примере указана библиотека_ _GuiList.au3, но в инклудах ее нет, поэтому заменил на сущесвующую
Opt ('MustDeclareVars', 1)
Dim $msg, $ret
Dim $listbox, $button, $label
GUICreate("ListBox Count Item(s) Demo", 400, 250, -1, -1) ;создание формы
$listbox = GUICtrlCreateList("", 125, 40, 180, 120) ;создание элемента ListBox_ _через присвоение переменной $listbox функции создания элемента на форме
GUICtrlSetData($listbox, "test1|test2|test3|") ;наполнение ListBox элементами
$button = GUICtrlCreateButton("Count Items", 150, 160, 120, 40) ;создание кнопки
$label = GUICtrlCreateLabel("# of Items", 150, 210, 120) ; создание надписи
GUISetState() ;функция, которая возвращает содержимое элемента и его индекс
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $button
$ret = _GUICtrlListCount ($listbox)
If ($ret == $LB_ERR) Then
MsgBox(16, "Error", "Unknown error from _GUICtrlListCount")
Else
GUICtrlSetData($label, "# of Items: " & $ret)
EndIf
EndSelect
WEnd
Насколько я понимаю, для обработки существующего списка нужно вытащить его handle, вытащить его через AutoIT Window Info не совес получается, ибо не могу придумать, как именно вернуть handle и не понимаю, что в итоге оказывается в переменной $listbox из примера. Вывод содержимого переменной в консоль не особо помогает, т.к. возвращается значение "3". По идее, это ControlID, но при обращении к нему через функцию _GuiCtrlListBox_GetCount возвращается 0, т.е. список как бы пустой.
Вот скрин Window Info с инфой по контролу
http://narod.ru/disk/20414766000/3.JPG.html