|
Оба имеют тип "документ" и при активности каждого из них заголовок окна конфигуратора единый. Поэтому если пользователь вызывает команду в окне сообщений, то скрипт думает что текст модуля изменился на содержание этого окна.
Прошу выдать в API какой то признак, что это окно сообщений или хотя бы что в нем запрещено редактирование.
К получить размеры и позицию элемента типа "документ"?
(2) tormozit, на данный момент, через API никак. Нужна доработка.
Добавлен метод
ТекЭлемент = ТурбоКонф.ПолучитьДанныеUIAutomation(ТурбоКонф.ПолучитьАктивноеОкно());
Сообщить(
ТекЭлемент.ControlType + ", " +
ТекЭлемент.Name + ", " +
Строка(ТекЭлемент.IsEnabled) + ", " +
Строка(ТекЭлемент.Left) + ", " +
Строка(ТекЭлемент.Top) + ", " +
Строка(ТекЭлемент.Right) + ", " +
Строка(ТекЭлемент.Bottom) + ", " +
Строка(ТекЭлемент.Width) + ", " +
Строка(ТекЭлемент.Height) + ", " +
ТекЭлемент.Value);
Такой способ еще можно попробовать
ПозицияКаретки = ТурбоКонф.ПолучитьПозициюКаретки();
ТурбоКонф.ControlAltKey(Keys.O);
ПозицияКаретки2 = ТурбоКонф.ПолучитьПозициюКаретки();
Если ПозицияКаретки.X <> ПозицияКаретки2.X ИЛИ ПозицияКаретки.Y <> ПозицияКаретки2.Y Тогда
Сообщить("Это текстовый документ");
ТурбоКонф.Клавиша(Keys.Escape);
Иначе
Сообщить("Это окно служебных сообщений");
КонецЕсли;
(5) bolsun, да, этот способ хорошо повысил точность определения как добавка к проверке содержимого поля. Правда после отправки нажатия клавиши пришлось вставить задержку 20мс для повышения вероятности считывания нового заголовка.
tormozit изменил статус на Закрыто
На текущий момент простого и точного способа определить - нет.
Только по каким-то косвенным признакам (размер, позиция окна сообщений).