Если скриптом открыть контекстное меню в дереве конфигурации, то методы ПолучитьТипТекущегоЭлемента() и ПолучитьИмяЭлемента() ведут себя так, как будто фокус в дереве конфигурации, т.е. возвращают элемент списка дерева, вместо элемента меню.
Насколько нормально такое их поведение?
Уже много раз сталкивался с этой проблемой в рамках задачи надежного ответа на вопрос "Открылось ли контекстное меню".
Пока нашел такой умеренно надежный способ обхода
Или ТурбоКонф.НайтиЭлементПоИмени("Свойства", "элемент меню")
Или ТурбоКонф.НайтиЭлементПоИмени("Добавить", "элемент меню")
#1, 13 января 2025 22:53
Используй Если ПолучитьТипТекущегоЭлемента = ТипЭлемента.ЭлементМеню Тогда это меню.
#2, 13 января 2025 22:57
(1) bolsun, так и делал изначально, но это условие не выполняется, даже если я жду 1000мс
#3, ред. 13 января 2025 23:02
(2) tormozit, да, не работает, т.к. фокус не уходит в это меню.
#4, 13 января 2025 23:11
У меня есть другие методы, которые возвращают правильное значение типа и имени текущего элемента (полученные при событии OnFocusChange UIAutomation, проброшу в API.
#5, 13 января 2025 23:56
6.3.9145.3319
https://disk.yandex.ru/d/ay0Wg6IBTsxSxg
API
Добавлены методы
ПолучитьИмяАктивногоЭлемента()
ПолучитьТипАктивногоЭлемента()
Возвращают имя или тип на основе события UIAutomation OnFocusChanged
#6, 14 января 2025 00:29
Новый метод выдает тот же неожиданный тип - элемент списка. Вот код
Пробовал перед ним задержку 100мс - не помогло.
#7, 14 января 2025 00:31
(6) tormozit, я проверял на уже открытом меню. возможно нужна большая задержка.
#8, 14 января 2025 00:34
Проверил с задержкой 200мс - результат тот же. Причем проверки на наличие элемента меню по его имени срабатывают довольно надежно и без задержки.
#9, 14 января 2025 00:36
Ссылка скрыта
#10, 14 января 2025 00:48
(9) tormozit, добавь в скрипт ShowOutputForm
Сообщить(ТурбоКонф.ПолучитьИмяАктивногоЭлемента());
Сообщить(ТурбоКонф.ПолучитьТипАктивногоЭлемента());
вызови меню, а затем Служебные сообщения.
#11, 16 января 2025 14:51
bolsun изменил статус на На выяснении