Внешняя компонента Native API для управления окнами и буфером обмена, получения снимков окон Windows и Linux
Разработка - Разработка внешних компонент
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Изначально разрабатывалась как составная часть инструмента тестирования прикладных решений Vanessa Automation, однако имеет самостоятельную ценность и может быть использована с составе других продуктов. Главным достоинством компоненты является возможность получения снимка любого открытого окна 1С, даже если оно перекрыто другими окнами приложений.
Внешняя компонента поддерживает как синхронный, так и асинхронный вызов. Далее по тексту все примеры будут приводиться для синхронных вызовов.
Для создания объекта экземпляра внешней компоненты используйте имя WindowsControl.
В прилагаемом примере файлы внешней компоненты хранятся в макете _1cWinCtrl.
Реквизит формы МестоположениеКомпоненты используется для передачи макета компоненты между сервером и клиентом.
Многие свойства и методы компоненты возвращают сложные типы данных, которые сериализованы в строку формата JSON. Поэтому рекомендуется объявить в вызывающем модуле универсальную функцию, которая будет использоваться ниже в примерах работы компоненты:
&НаКлиенте
Функция ПрочитатьСтрокуJSON(ТекстJSON)
Если ПустаяСтрока(ТекстJSON) Тогда
Возврат Новый Структура;
Иначе
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(ТекстJSON);
Возврат ПрочитатьJSON(ЧтениеJSON);
КонецЕсли;
КонецФункции
Компонента преимущественно предназначена для управления окнами тонкого клиента «1С:Предприятие». Поскольку разрабатывалась она для работы в составе менеджера тестирования, имеется специальный метод для поиска запущенного экземпляра процесса клиента тестирования 1С по номеру порта подключения.
ТекстJSON = ВнешняяКомпонента.НайтиКлиентТестирования(ПортПодключения);
ДанныеJSON = ПрочитатьСтрокуJSON(ТекстJSON);
ИдентификаторПроцесса = ДанныеJSON .ProcessId;
Используя идентификатор процесса, получаем список открытых окон приложения и для каждого окна его снимок. Если формы 1С открываются в режиме «Блокировать окно владельца», то список окон имеет иерархическую структуру, и у каждого элемента списка есть ссылка на идентификатор родительского окна.
НаборСнимковОкон = Новый СписокЗначений;
ТекстJSON = ПолучитьСписокОкон(ИдентификаторПроцесса);
ДанныеJSON = ПрочитатьСтрокуJSON(ТекстJSON);
Для Каждого Стр из ДанныеJSON Цикл
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокОкна(Стр.window);
НаборСнимковОкон.Добавить(ДвоичныеДанные, Стр.title);
КонецЦикла;
Подробная инструкция по работе с компонентой доступна на сайте: http://lintest.github.io
Вступайте в нашу телеграмм-группу Инфостарт