Что нового

Обращение к вкладке

Tuner

Новичок
Сообщения
15
Репутация
0
Приветствую скрипткодеров!

Только начал изучать AutoIT и столкнулся с такой трудностью - не могу обратиться к вкладке программы Metatrader4, как я понял это нестандартный элемент. Прошу помочь с последним пунктом:

Код:
; 1. Дожидаемся появления нужного окна
WinWaitActive("9476333: Alpari MT4 - Демо Счет")
; 2. Нажимаем на Button "Старт"
ControlClick("9476333: Alpari MT4 - Демо Счет", "Старт", "[CLASS:Button; INSTANCE:10]")
; 3. Ждем пару сек
Sleep(2000)
; 4. Кликаем по другой вкладке
?


Информация панели с вкладками: "[CLASS:AfxWnd110s; INSTANCE:5]"
Проблема в том что Autoit Windows Info не видит названия вкладок (текст) и не понятно как обратиться к нужной вкладке. Управление GUI через клавиатуру не поддерживается, горячие клавиши тоже.

DW2a6d9m.png
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Tuner
Используйте клик по координатам вкладки относительно контрола
Код:
ControlClick("9476333", "", "AfxWnd110su5", "left", 1,  40, 10) ; Настройки
ControlClick("9476333", "", "AfxWnd110su5", "left", 1, 150, 10) ; Результаты оптимизации
ControlClick("9476333", "", "AfxWnd110su5", "left", 1, 300, 10) ; График оптимизации
; и т.д.
 
Автор
Tuner

Tuner

Новичок
Сообщения
15
Репутация
0
InnI, спасибо огромное, получилось!
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Код:
$hControl = ControlGetHandle($hWnd, "", '[CLASS:SysTabControl32;INSTANCE:1]') ; Получаем дескриптор элемента Tab
If Not $hControl Then Exit
$Tab = ControlCommand($hWnd, "", $hControl, "CurrentTab") ; Получаем номер вкладки

Switch $Tab ; Взависимости от текущего номера вкладки переключаем на нужную вкладку
	Case 1
		ControlCommand($hWnd, "", $hControl, "TabRight") ; Если 1, то выбираем слудующую
	Case 2 ; Если уже выбрана нужная - 2
		Sleep(10)
	Case 3
		ControlCommand($hWnd, "", $hControl, "TabLeft") ; Если 3, то выбираем предыдущую
	Case 4
		ControlCommand($hWnd, "", $hControl, "TabLeft") ; Если 4, то выбираем предыдущую 2 раза
		ControlCommand($hWnd, "", $hControl, "TabLeft")
	Case Else ; если что то иное, значит это неправильно и выход
		Exit
EndSwitch
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
AZJIO
К сожалению, на элементе AfxWnd110s данный подход не работает.
 
Верх