Невозможно отличить окно модуля и окно сообщений

tormozit Закрыто Средний

Оба имеют тип "документ" и при активности каждого из них заголовок окна конфигуратора единый. Поэтому если пользователь вызывает команду в окне сообщений, то скрипт думает что текст модуля изменился на содержание этого окна.
Прошу выдать в API какой то признак, что это окно сообщений или хотя бы что в нем запрещено редактирование.

Комментарии

bolsun
#1, 27 августа 2023 14:08

На текущий момент простого и точного способа определить - нет.
Только по каким-то косвенным признакам (размер, позиция окна сообщений).


tormozit
#2, 27 августа 2023 14:21

К получить размеры и позицию элемента типа "документ"?


bolsun
#3, 27 августа 2023 14:23

(2) tormozit, на данный момент, через API никак. Нужна доработка.


bolsun
#4, 27 августа 2023 21:56

Добавлен метод

ТекЭлемент = ТурбоКонф.ПолучитьДанныеUIAutomation(ТурбоКонф.ПолучитьАктивноеОкно());

Сообщить(
	ТекЭлемент.ControlType + ", " + 
	ТекЭлемент.Name + ", " + 	
	Строка(ТекЭлемент.IsEnabled) + ", " + 
	Строка(ТекЭлемент.Left) + ", " + 
	Строка(ТекЭлемент.Top) + ", " + 
	Строка(ТекЭлемент.Right) + ", " + 
	Строка(ТекЭлемент.Bottom) + ", " + 
	Строка(ТекЭлемент.Width) + ", " + 
	Строка(ТекЭлемент.Height) + ", " + 
	ТекЭлемент.Value);


bolsun
#5, 27 августа 2023 22:21

Такой способ еще можно попробовать

ПозицияКаретки = ТурбоКонф.ПолучитьПозициюКаретки();

ТурбоКонф.ControlAltKey(Keys.O);

ПозицияКаретки2 = ТурбоКонф.ПолучитьПозициюКаретки();

Если ПозицияКаретки.X <> ПозицияКаретки2.X ИЛИ ПозицияКаретки.Y <> ПозицияКаретки2.Y Тогда
	Сообщить("Это текстовый документ");
	ТурбоКонф.Клавиша(Keys.Escape);
Иначе
	Сообщить("Это окно служебных сообщений");
КонецЕсли;


tormozit
#6, 28 августа 2023 18:56

(5) bolsun, да, этот способ хорошо повысил точность определения как добавка к проверке содержимого поля. Правда после отправки нажатия клавиши пришлось вставить задержку 20мс для повышения вероятности считывания нового заголовка.


tormozit
#7, 02 сентября 2023 14:38

tormozit изменил статус на Закрыто


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера