Русское сообщество AutoIt

  • Май 20, 2012, 12:10:49 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:


Последняя финальная версия AutoIt: 3.3.8.1 (Скачать)
Последняя Beta версия AutoIt: 3.3.9.4 (Скачать)

Реклама

Автор Тема: Автомат-вать работу приложения, элементы которого не видит AutoIt Window info  (Прочитано 1841 раз)

0 Пользователей и 1 Гость смотрят эту тему.

webmonster [?]

Добрый день, коллеги. Подскажите пожалуйста как отмечать или выделять элементы программы, которые не видит AutoIT Window info. Приходилось уже автоматизировать установку Программ + настройку ini-файлов.
В общем так выглядит приложение с которым я собрался работать..


Вопрос в том, чем подцеплять пункты выпадающего меню, если нужно выделить его двойным кликом?
Вариант с использованием координнат и кликов мыши по ним подходит меньше всего.
В идеале нужно распознать пункты меню и содержимое полей ID, Name и Adres.
С остальным, думаю, что разберусь.

ПС, камнями не кидаться, я учусь!
« Последнее редактирование: Август 16, 2010, 12:22:30 от webmonster »



  Записан

madmasles [?]

  • Модератор
  • *
  • *****
  • Репутация: 1425
  • Online Online
  • Пол: Мужской
  • Сообщений: 3814
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
webmonster
Очень похоже, что слева у Вас в приложении TreeView, а справа - ListView. Если это так, то смотрите в англ. справке функции по ним. User Defined Function Reference - GuiTreeView Management (GuiListView Management)/

PS
Если выложите куда-нибудь это приложение или дадите ссылку на него, то попробую Вам помочь.

Garrett [?]

  • Локальный модератор
  • *
  • *****
  • Репутация: 548
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 2056
  • Версия AutoIt: 3.3.6.1
    • Награды
Ситуацию  смоделировал грубо, но смысл, думаю понятен.  :)
Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test form", 1270, 867, 192, 114)
$TreeView1 = GUICtrlCreateTreeView(8, 8, 313, 849)
$TreeView1_0 = GUICtrlCreateTreeViewItem("Номер один", $TreeView1)
$TreeView1_1 = GUICtrlCreateTreeViewItem("Номер два", $TreeView1_0)
$TreeView1_2 = GUICtrlCreateTreeViewItem("Один", $TreeView1_1)
$TreeView1_3 = GUICtrlCreateTreeViewItem("Два", $TreeView1_1)
$TreeView1_4 = GUICtrlCreateTreeViewItem("Три", $TreeView1_1)
$TreeView1_5 = GUICtrlCreateTreeViewItem("Номер три", $TreeView1_0)
$TreeView1_6 = GUICtrlCreateTreeViewItem("Тест 1", $TreeView1_5)
$TreeView1_7 = GUICtrlCreateTreeViewItem("Тест 2", $TreeView1_5)
$TreeView1_8 = GUICtrlCreateTreeViewItem("Тест 3", $TreeView1_5)
$ListView1 = GUICtrlCreateListView("ID|Name|Address", 328, 8, 930, 846, -1, BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES))
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 200)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 500)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

    If WinActive("Test form") Then
        Sleep(1000)
        Send("{NumPadMult}")
    EndIf
    Sleep(1000)
    $hTreeView1 = ControlGetHandle($Form1, "", $TreeView1)
    $Tree = ControlTreeView ($Form1, "", $hTreeView1, "Select", "Номер один|Номер два|Три")
    ControlClick("Test form","",$Tree)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $TreeView1_4
        GUICtrlCreateListViewItem("1|Name 1|Address 1", $ListView1)
        GUICtrlCreateListViewItem("2|Name 2|Address 2", $ListView1)
        GUICtrlCreateListViewItem("3|Name 3|Address 3", $ListView1)
        $Text = ControlListView("Test form", "", "[CLASS:SysListView32; INSTANCE:1]", "GetText",1,2)
        MsgBox(0,"",$Text)
        Exit
    EndSwitch
WEnd




  Записан

--------------------------------------------------------------------------------------------------
Все стандарты Document Object Model HTML
--------------------------------------------------------------------------------------------------
«Жизнь – цепь, а мелочи в ней – звенья. Нельзя звену не придавать значения!»

webmonster [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Сообщений: 31
  • Версия AutoIt: V3
    • Награды
Принцип понятен, но в вашем примере понятно как обратиться к тому или иному разделу или подразделу дерева.
Я же вижу только названия разделов.
Я пробую сделать пошагово, но недопонимаю процесс.. вот кусок скрипта с попыткой кликать по веткам:
Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
$maintree = "[CLASS:SysTreeView32; INSTANCE:1]"
WinWaitActive ('Application','')
If WinActive("Application") Then
        Sleep(1000)
        Send("{NumPadMult}")
    EndIf
    Sleep(1000)
    $hTreeView1 = ControlGetHandle("Application", "", $maintree); как я понял, выделяем окно с деревом... systreeview32 определил window info
$click1 = ControlTreeView("Application", "", $hTreeView1, "Select", "Управление"); берем в переменную ветку "управление"
$click2 = ControlTreeView("Application", "", $hTreeView1, "Select", "Действия"); берем в переменную ветку "Действия"
ControlClick("Appliaction","",$click1) ; Ветка "Управление" выделяется
MsgBox(1,"Шаг 1","Ткнули в управление"); сообщение вылезает
Sleep(3000)
ControlClick("Appliaction","",$click2) ; Ничего нового не происходит
MsgBox(1,"Шаг 2","Ткнули в Действия") ; сообщение вылезает
Exit

 




  Записан

Garrett [?]

  • Локальный модератор
  • *
  • *****
  • Репутация: 548
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 2056
  • Версия AutoIt: 3.3.6.1
    • Награды
webmonster
Код: AutoIt [Выделить]
;~ ~~~
    If WinActive("Application") Then ;если программа активна...
        Sleep(1000) ; задержка для наглядности
        Send("{NumPadMult}") ; то, посылаем команду, раскрыть всё дерево
    EndIf ; далее...
    Sleep(1000) ; задержка для наглядности
    $hTreeView1 = ControlGetHandle("Application", "", "[CLASS:SysTreeView32; INSTANCE:1]") ; получаем Handel контрола TreeView
    $Tree = ControlTreeView ("Application", "", $hTreeView1, "Select", _
                             "Управление|Действия|Отправить конфиг на терминал") ; выбираем пункт, по которому нужно кликнуть
                                                                                 ; (при выборе происходит клик)
    ControlClick("Application","",$Tree) ; дублируем клик, если нужно (опционально)
;~ ~~~
    $Text = ControlListView("Application", "", "[CLASS:SysListView32; INSTANCE:1]", _
                            "GetText",1,2) ; получаем текст и второй строки, третьей колонки ListView
    MsgBox(0,"",$Text)
;~ ~~~




  Записан

decadent [?]

  • Новичок
  • *
  • Репутация: 0
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 6
  • Версия AutoIt: v3.3.6.1
    • Награды
Продолжу эту тему. Проблема похожа.

Как получить доступ к элементам этого Oracle Universal installer?




  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
AutoIt Window Info не возвращает координаты пикселей окна!
Общение
Kalisnik 4 1643 Последний ответ Ноябрь 30, 2010, 23:55:03
от Yuriy
AutoIt Window Info - забирает фокус себе, а оцениваемое окно остается закулисами
AutoIt для новичков
Kalisnik 0 1055 Последний ответ Март 29, 2010, 20:32:01
от Kalisnik
Как узнать ID для поля ввода с помощью AutoIt Window Info?
AutoIt для новичков
HelpMe 14 1855 Последний ответ Декабрь 09, 2010, 16:02:22
от HelpMe
Control Viewer - Дополнение для AutoIt Window Info
Примеры и рабочие проекты
Yashied 9 2589 Последний ответ Март 19, 2011, 03:13:33
от Yashied
Control Viewer - Альтернатива AutoIt Window Info
Инструменты и помощь по AutoIt
Yashied 59 9099 Последний ответ Май 19, 2012, 11:43:41
от Yashied
Нужен скрипт аналога AutoIt Window Info Tool
AutoIt для новичков
Sanke 8 1204 Последний ответ Апрель 01, 2011, 02:45:47
от AZJIO
autoit window info не видит окна
AutoIt для новичков
yanoob 7 767 Последний ответ Август 18, 2011, 13:50:13
от yanoob
Почему AutoIt Window Info не работает с Skype ?
AutoIt для новичков
armenxxx1 9 991 Последний ответ Декабрь 26, 2011, 01:49:44
от armenxxx1
Перенесено: Control Viewer - Альтернатива AutoIt Window Info
Примеры и рабочие проекты
CreatoR 0 222 Последний ответ Март 14, 2012, 14:34:40
от CreatoR
Запись значения строки из Window Info в переменную.
Стол заказов
MrGep 3 195 Последний ответ Апрель 06, 2012, 15:23:01
от Zaramot


Реклама

* Последние сообщения на форуме
post Сглаживание рывков при передачи новых координат игрока по TCP/IP
[Общение] Ganibal95 Сегодня в 12:10:37
post Перенесено: Уроки программирования и автоматизации посредством AutoIt для чайников
[AutoIt для новичков] Yashied Сегодня в 12:09:28
post Re: Защита исходного кода программы
[AutoIt для новичков] iamOmg Сегодня в 12:09:05
post Проблема с циклами While
[AutoIt для новичков] Andeangl Сегодня в 11:03:15
post Уроки программирования и автоматизации посредством AutoIt для чайников
[Инструменты и помощь по AutoIt] aak Сегодня в 09:41:45
post Re: Как спарсить ссылку внутри тега "td" определенного класса
[Регулярные выражения и прочее] eropov Сегодня в 05:27:00
post Re: Ограничение доступа(блокировка) к компьютеру если не вставлен носитель с ключом
[AutoIt для новичков] Pat4005 Сегодня в 01:02:55
post Re: Развитие русской справки
[Инструменты и помощь по AutoIt] CreatoR Сегодня в 00:02:03
post Re: Развитие русской справки
[Инструменты и помощь по AutoIt] CreatoR Май 19, 2012, 23:55:37
post Узнать значение возвращаемое функцией javascript
[Автоматизация IE и Web-интерфейса] Viktor1703 Май 19, 2012, 23:25:05

* Пользователи онлайн
  • Dot Гостей: 95
  • Dot Скрыт: 1
  • Dot Пользователей: 26
  • Dot Пользователи Online: