Что нового

[Автоматизация] Как активировать и выбрать элемент меню в ControlTreeView

achumagin

Новичок
Сообщения
3
Репутация
0
Всем привет.
Начал изучать AutoIt, сейчас хочу написать автоматическую установку одно приложения.
В приложении, есть выбор компонент которые будут установлены. И тут у меня возникла проблема, я не могу вызвать контекстное меню элемента который будет установлен. см. скриншот
Итак.
Я выбираю элемент в дереве:
Код:
ControlTreeView($windowId, "", $h_tree, "Select", "#2")

а как вызвать контекстное меню у этого элемента не знаю :(.
Подскажите как действовать?
Заранее спасибо.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Тебе нужно приложение установить или к компоненте обратиться?
Для первого есть у каждого инсталятора скрипты установки и тихая установка. Это будет какбэ правильней использовать встроенные средства. Для второго ждем спецов по гуям
 
Автор
achumagin

achumagin

Новичок
Сообщения
3
Репутация
0
axlwor сказал(а):
Тебе нужно приложение установить или к компоненте обратиться?
Для первого есть у каждого инсталятора скрипты установки и тихая установка. Это будет какбэ правильней использовать встроенные средства. Для второго ждем спецов по гуям

Нужно обратиться к элементу.
У "моего" инсталлятора нет тихой установки.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
achumagin
Вот предлагаю вам альтернативный вариант.
Покажу на примере MSOffice (просто он был под рукой)

Запускаем инсталляцию и проходим её до момента выбора компонентов Рис.1.
Далее выбираем раздел Microsoft Office и в открывшемся списке с помощью утилиты Au3Info.exe находим нужные нам данные, а именно, класс SysTreeView32, его позицию в окне и координаты курсора мыши (в тот момент, когда мы навели прицел) Рис.2.
После нехитрых вычислений мы получаем координаты для функции ControlClick.
Ну а теперь, пишем скрипт!
Укажем Autoit`у с помощью функции Opt, что хотим искать окна по специфическим данным, таким как часть строки в заголовке окна, CLASS, ID и т.д.
Код:
Opt('WinTitleMatchMode', 2)

Так же дадим понять, что будем работать с координатами клиентской части выбранного нами окна.
Код:
Opt('MouseCoordMode', 2)
; ...

После чего будет идти часть скрипта, которая проведёт нас по инсталляции до момента, когда нам нужно будет выбрать компоненты. Эту часть мы опустим.
Пишем далее:
Код:
ControlTreeView ("Office XP", "", "[CLASS:SysTreeView32; INSTANCE:1]", "Select" ,"#0|#0")

Здесь мы указали Autoit`у, что нам нужно раскрыть дерево SysTreeView32 и выбрать первый Sub Item он же нулевой. Если нам нужно было бы выбрать дальше, то мы бы написали "#0|#0|#0" (всё есть в справке)
После чего ставим небольшую задержку (чисто для себя)
Код:
Sleep(100)

и пишем следующий код, где указываем координаты, которые мы вычисляли ранее!
Код:
ControlClick ("Office XP", "", "[CLASS:SysTreeView32; INSTANCE:1]", "left", 1, 86, 27)

Получаем то, что видим на Рис.3.
Остаётся только воспользоваться функцией Send. Что мы и сделаем.
Код:
Send ("{DOWN}")
Sleep(25)
Send ("{ENTER}")

Рис.4
Вот собственно и всё!
 
Автор
achumagin

achumagin

Новичок
Сообщения
3
Репутация
0
Верх