Skip to content

Latest commit

 

History

History
1123 lines (898 loc) · 70.9 KB

WindowsControl.md

File metadata and controls

1123 lines (898 loc) · 70.9 KB

WindowsControl - внешняя компонента для управления окнами и процессами

Предназначена для Windows и Linux. Разработана по технологии Native API в составе библиотеки VanessaExt.

Возможности компоненты:

  • Получение списка окон и списка процессов
  • Управление размерами и положением окна
  • Получение снимка окна и снимка экрана
  • Обмен данными по протоколу WebSocket
  • Эмуляция действий пользователя
  • Доступ к данным буфера обмена

Подключение внешней компоненты

&НаКлиенте
Перем ВнешняяКомпонента;

&НаКлиенте
Процедура ПодключениеВнешнейКомпонентыЗавершение(Подключение, ДополнительныеПараметры) Экспорт
	ВнешняяКомпонента = Новый("AddIn." + ИдентификаторКомпоненты + ".WindowsControl");
КонецПроцедуры	

Свойства

Методы

Работа с процессами:

Информация об окружении:

Управление окном приложения:

Виртуальные рабочие столы (только для Windows):

Автоматизация пользовательского интерфейса (только для Windows):

Эмуляция действий пользователя (только для Windows):

Меотды компьютерного зрения:

Визуализация действий пользователя (только для Windows):

Воспроизведение мультимедиа файлов (только для Windows):

Обмен данными по протоколу WebSocket:

Захват изображения экрана:

Поиск файлов (только для Windows):

Свойства

Тип значения: Строка (только чтение)

  • Возвращает строку с текстом в формате JSON, при чтении которого получаем объект типа Структура с размерами экрана и рабочей области.

Тип значения: Строка (только чтение)

  • Возвращает строку с текстом в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура с размерами дисплеев мониторов.

Тип значения: Строка (только чтение)

  • Возвращает строку с текстом в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура с информацией об окнах верхнего уровня: дескриптор окна, диентификатор процесса, владелец, заголовок окна.

Тип значения: Целое число (только чтение)

  • Возвращает идентификатор основного процесса приложения 1С, в сеансе которого вызывается внешняя компонента.

Тип значения: Целое число (чтение и запись)

  • Дескриптор приоритетного окна (окна, с которым пользователь в настоящее время работает).

Тип значения: Строка (чтение и запись)

  • Предоставляет доступ к содержимому буфера обмена в текстовом формате.

Тип значения: Двоичные данные (чтение и запись)

  • Предоставляет доступ к содержимому буфера обмена в формате картинки PNG.
ПотокВПамяти = Новый ПотокВПамяти;
БиблиотекаКартинок.ДиалогИнформация.Записать(ПотокВПамяти);
ДвоичныеДанные = ПотокВПамяти.ЗакрытьИПолучитьДвоичныеДанные();
ВнешняяКомпонента.КартинкаБуфераОбмена = ДвоичныеДанные;

Методы

Возвращает текст в формате JSON, при чтении которого получаем объект типа Структура, сотдержащий информацию о клиенте тестирования, найденному по номеру порта, который присутствует в командной строке экземпляра клиента тестирования.

Параметры функции:

  • НомерПорта (обязательный), Тип: Целое число

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура с подробной информацией о найденном процессе.
    • ProcessId - идентификатор процесса (Число)
    • CommandLine - командная строка процесса (Строка)
    • CreationDate - дата старта процесса (Дата)
    • Window - дескриптор основного окна (Число)
    • Title - заголовок основного окна (Строка)
ТекстJSON = ВнешняяКомпонента.НайтиКлиентТестирования(ПортПодключения);
СтруктураСвойствПроцесса = ПрочитатьСтрокуJSON(ТекстJSON);
Если СтруктураСвойствПроцесса <> Неопределено Тогда
	ИдентификаторПроцесса = СтруктураСвойствПроцесса.ProcessId;
	ДескрипторОкна = СтруктураСвойствПроцесса.Window;
КонецЕсли;

Получает список запущенных процессов с возможностью отбора только процессов 1С. Отбор производится по наименованию исполняемого файла на соответствие маске "1cv8*".

Параметры функции:

  • ИспользоватьОтбор (обязательный), Тип: Булево

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем типа Массив из элементов типа Структура информацией о процессах.
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокПроцессов(Истина);
Для каждого Стр из ПрочитатьСтрокуJSON(ТекстJSON) Цикл
	НоваяСтр = СписокПроцессов.Добавить();
	ЗаполнитьЗначенияСвойств(НоваяСтр, Стр);
КонецЦикла;

По идентификатору процесса возвращает всю доступную информацию о процессе.

Параметры функции:

  • ИдентификаторПроцесса (обязательный), Тип: Целое число

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура с подробной информацией о процессе:
    • ProcessId - идентификатор процесса (Число)
    • CommandLine - командная строка процесса (Строка)
    • CreationDate - дата старта процесса (Дата)
ТекстJSON = ВнешняяКомпонента.ПолучитьСвойстваПроцесса(ИдентификаторПроцесса);
СтруктураСвойстваПроцесса = ПрочитатьСтрокуJSON(ТекстJSON);

Выводит произвольный текст в консоль родительского процесса.

Параметры функции:

  • Текст (обязательный), Тип: Строка
  • Кодировка (необязательный), Тип: Целое число
    • Кодировка текста при перенаправлении вывода в файл, по умолчанию 866.
Текст = "Привет! Проверка связи." + Символы.ПС;
ВнешняяКомпонента.ВывестиВКонсоль(Текст);

Выполняет запуск внешнего приложения или команды операционной системы.

Параметры функции:

  • Команда (обязательный), Тип: Строка
  • СкрытьОкно (необязательный), Тип: Булево

Тип возвращаемого значения: Целое число

  • Идентификатор процесса внешнего приложения

При завершении работы приложения происходит генерация внешнего события.

КоманднаяСтрока = "ping 127.0.0.1";
PID = ВнешняяКомпонента.СоздатьПроцесс(КоманднаяСтрока, Истина);

Простейшая функция однократного обмена данными по протоколу WebSocket. Может использоваться для интеграции с браузером Google Chrome.

Параметры функции:

  • Адрес (обязательный), Тип: Строка
  • Команда (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Содержит данные, полученные как ответ сервера WebSocket на отправленную команду.
	АдресВебСокет = "ws://localhost:9222/devtools/page/771BF9AF6EE6F712337EF74397960652";
	КомандаJSON = "{""id"":1,""method"":""Page.captureScreenshot"",""params"":{""format"":""png""}";
	ТекстJSON = ВнешняяКомпонента.ВебСокет(АдресВебСокет, КомандаJSON);
	ДанныеJSON = ПрочитатьСтрокуJSON(ТекстJSON);
	ДвоичныеДанные = Base64Значение(ДанныеJSON.result.data);

Подробная информация о Chrome DevTools Protocol доступна по адресу:

Подключение к серверу WebSocket для начала многократного обмена данными. Может использоваться для интеграции с браузером Google Chrome.

Параметры функции:

  • Адрес (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Пустая строка в случае успеха, либо сообщение об ошибке.
АдресВебСокет = "ws://localhost:9222/devtools/page/771BF9AF6EE6F712337EF74397960652";
Результат  = ВнешняяКомпонента.ОткрытьВебСокет(АдресВебСокет);
Если Не ПустаяСтрока(Результат) Тогда
	Сообщить(Результат);
КонецЕсли

Обмен данными по протоколу WebSocket: отправка пакета данных и получение результата. Может использоваться для интеграции с браузером Google Chrome.

Параметры функции:

  • Команда (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Содержит данные, полученные как ответ сервера WebSocket на отправленную команду.
КомандаJSON = "{""id"":1,""method"":""Page.captureScreenshot""}";
ТекстJSON = ВнешняяКомпонента.ПослатьВебСокет(КомандаJSON);
ДанныеJSON = ПрочитатьСтрокуJSON(ТекстJSON);
ДвоичныеДанные = Base64Значение(ДанныеJSON.result.data);

Закрытие открытого ранее соединения WebSocket.

Возвращаемое значение отсутствует.

ВнешняяКомпонента.ЗакрытьВебСокет();

Приостанавливает выполнение программного кода на заданное количество миллисекунд.

ВнешняяКомпонента.Пауза(1000);

По дескриптору окна получает список дисплеев, на которых располагается окно или его части.

Параметры функции:

  • ДескрипторОкна (необязательный), Тип: Целое число Если параметр не задан, будет получена информация обо всех дисплеях.

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура со свойствами дисплея: координаты границ, высота и ширина, наименование дисплея, координаты и размер рабочей области дисплея.
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокДисплеев(ДескрипторОкна);
Для каждого ЭлементМассива из ПрочитатьСтрокуJSON(ТекстJSON) Цикл
	ЗаполнитьЗначенияСвойств(СписокДисплеев.Добавить(), ЭлементМассива);
КонецЦикла;

По дескриптору окна получает свойства дисплея, на котором располагается наибольшая часть окна.

Параметры функции:

  • ДескрипторОкна (необязательный), Тип: Целое число Если параметр не задан, будет получена информация для активного окна.

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура со свойствами дисплея: координаты границ, высота и ширина, наименование дисплея, координаты и размер рабочей области дисплея.
ТекстJSON = ВнешняяКомпонента.ПолучитьСвойстваДисплея(ДескрипторОкна);
СвойстваДисплея = ПрочитатьСтрокуJSON(ТекстJSON);
ВнешняяКомпонента.УстановитьПозициюОкна(ДескрипторОкна, СвойстваДисплея.Left, СвойстваДисплея.Top);

Возвращает текст в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура с информацией об окнах, принадлежащих указанному процессу.

Параметры функции:

  • ИдентификаторПроцесса (обязательный), Тип: Целое число
    • Если параметр нулевой или не задан, возвращается список всех окон.

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура с информацией о найденых окнах:
    • Window - дескриптор окна (Число)
    • ProcessId - идентификатор процесса (Число)
    • Class - идентификатор класса окна (Строка)
    • Title - заголовок окна (Строка)
    • Owner - окно владелец (Число)
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокОкон(ИдентификаторПроцесса);
МассивОкон = ПрочитатьСтрокуJSON(ТекстJSON);
ТаблицаОкон.Очистить();
Для каждого Стр из МассивОкон Цикл
	ЗаполнитьЗначенияСвойств(ТаблицаОкон.Добавить(), Стр);
КонецЦикла;

Возвращает текст в формате JSON, при чтении которого получаем объект типа Структура с информацией об основных свойставх окна:

Параметры функции:

  • ДескрипторОкна (обязательный), Тип: Целое число
    • Если параметр нулевой, будут получены свойства активного окна.

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура с информацией об основных свойствах окна:
    • Window - дескриптор окна (Число)
    • ProcessId - идентификатор процесса (Число)
    • Maximized - распахнуто, максимизировано (Булево)
    • Class - идентификатор класса окна (Строка)
    • Title - заголовок окна (Строка)
    • Owner - окно владелец (Число)
ТекстJSON = ВнешняяКомпонента.ПолучитьСписокОкон(ИдентификаторПроцесса);
СвойстваОкна = ПрочитатьСтрокуJSON(ТекстJSON);
ЗаголовокОкна = СвойстваОкна.Title;

Возвращает текст в формате JSON, при чтении которого получаем объект объект типа Структура с информацией о размерах и позиции окна.

Параметры функции:

  • ДескрипторОкна (обязательный), Тип: Целое число
    • Если параметр нулевой, будут получены размеры активного окна.

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура с информацией о размерах и позиции окна:
    • Left - левая граница (Число)
    • Top - верхняя граница (Число)
    • Right - правая граница (Число)
    • Bottom - нижняя граница (Число)
    • Width - ширина окна (Число)
    • Height - высота высота (Число)
    • Window - дескриптор окна (Число)

Активирует окно по дескриптору.

Параметры функции:

  • ДескрипторОкна (обязательный), Тип: Целое число
ВнешняяКомпонента.АктивироватьОкно(ДескрипторОкна);

Распахиват (максимизирует) окно, разворачивая его на всё рабочую область экрана.

Параметры функции:

  • ДескрипторОкна (обязательный), Тип: Целое число
ВнешняяКомпонента.РаспахнутьОкно(ДескрипторОкна);

Показывает окно в нормальном режиме отображения, если оно было свёрнуто или распахнуто.

Параметры функции:

  • ДескрипторОкна (обязательный), Тип: Целое число
ВнешняяКомпонента.РазвернутьОкно(ДескрипторОкна);

Перемещает позицию курсора (мышки) в указанную точку экрана.

ВнешняяКомпонента.УстановитьПозициюКурсора(X, Y);

Осуществляет поиск фрагмента картинки, возвращает результат в формате JSON. Используются алгоритмы библиотеки OpenCV

Параметры процедуры:

  • Картинка (обязательный), Тип: Двоичные данные
  • Фрагмент (обязательный), Тип: Двоичные данные
  • МетодПоиска (обязательный), Тип: Число (от 0 до 2)
    • 0 - Соответствует значению TM_SQDIFF_NORMED
    • 1 - Соответствует значению TM_CCORR_NORMED
    • 2 - Соответствует значению TM_CCOEFF_NORMED

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура с информацией о размерах и позиции найденного фрагмента:
    • Match - соответствие найденного фрагмента образцу (Число от 0 до 1)
    • Left - левая граница (Число)
    • Top - верхняя граница (Число)
    • Right - правая граница (Число)
    • Bottom - нижняя граница (Число)
    • Width - ширина фрагмента (Число)
    • Height - высота фрагмента (Число)
    • X - координата центра (Число)
    • Y - координата центра (Число)
ДанныеКартинки = Новый ДвоичныеДанные("C:\Demo\Picture.png");
ДанныеФрагмента = Новый ДвоичныеДанные("C:\Demo\Fragment.png");
ТекстJSON = ВнешняяКомпонента.НайтиФрагмент(ДанныеКартинки, ДанныеФрагмента);

Осуществляет поиск картинки на экране, возвращает результат в формате JSON. Используются алгоритмы библиотеки OpenCV

Параметры процедуры:

  • Фрагмент (обязательный), Тип: Двоичные данные
  • МетодПоиска (обязательный), Тип: Число (от 0 до 2)
    • 0 - Соответствует значению TM_SQDIFF_NORMED
    • 1 - Соответствует значению TM_CCORR_NORMED
    • 2 - Соответствует значению TM_CCOEFF_NORMED

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура с информацией о размерах и позиции найденного фрагмента:
    • Match - соответствие найденного фрагмента образцу (Число от 0 до 1)
    • Left - левая граница (Число)
    • Top - верхняя граница (Число)
    • Right - правая граница (Число)
    • Bottom - нижняя граница (Число)
    • Width - ширина фрагмента (Число)
    • Height - высота фрагмента (Число)
    • X - координата центра (Число)
    • Y - координата центра (Число)
ФрагментКартинки = Новый ДвоичныеДанные("C:\Demo\Fragment.png");
ТекстJSON = ВнешняяКомпонента.НайтиНаЭкране(ФрагментКартинки);

Плавно перемещает позицию курсора (мышки) в указанную точку экрана за обозначенное количество шагов, на каждом шаге производися задержка на указанное количество милисекунд.

ВнешняяКомпонента.ЭмуляцияДвиженияМыши(X, Y, 1000, 3);

Эмулирует нажатие левой кнопкой миши, плавно перемещает позицию курсора (мышки) в указанную точку экрана за обозначенное количество шагов, на каждом шаге производися задержка на указанное количество милисекунд и затем эмулирует отпускание левой кнопкой мыши, то есть выполняет перетаскивание.

ВнешняяКомпонента.ЭмуляцияПеретаскивания(X, Y, 1000, 3);

Эмулирует нажаите указанной кнопки мыши.

Параметры процедуры:

  • КнопкаМыши (обязательный), Тип: Целое число
    • 0 - Левая кнопка
    • 1 - Правая кнопка
    • 2 - Средняя кнопка
ВнешняяКомпонента.ЭмуляцияНажатияМыши(0);

Эмулирует нажаите левой кнопкой мыши.

Параметры процедуры:

  • Задержка (необязательный), Тип: Целое число
    • Задержка между нажатиями в милисекундах, по умолчанию 100.
ВнешняяКомпонента.ЭмуляцияДвойногоНажатия();

Эмулирует вращение колеса мыши.

Параметры процедуры:

  • КнопкаМыши (обязательный), Тип: Целое число
    • (+1) - Вращение вперёд
    • (-1) - Вращение назад
ВнешняяКомпонента.ЭмуляцияКолесаМыши(1);

Эмулирует нажаите пользователем горячей клавиши. Параметры функции совместимы с типовым объектом СочетаниеКлавиш. Для вызова рекомендуется использовать следующий программный код.

СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.F11, Ложь, Истина, Ложь);

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, СочетаниеКлавиш);
ТекстXML = ЗаписьXML.Закрыть();
ЧтениеXML = Новый ЧтениеXML; 
ЧтениеXML.УстановитьСтроку(ТекстXML);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
КорневойУзел = ДокументDOM.ПервыйДочерний;
Для каждого ДочернийУзел из КорневойУзел.ДочерниеУзлы Цикл
	Если ДочернийУзел.ИмяУзла = "vKey" Тогда
		Клавиша = Число(ДочернийУзел.ТекстовоеСодержимое);
	ИначеЕсли ДочернийУзел.ИмяУзла = "flags" Тогда
		Флаги = Число(ДочернийУзел.ТекстовоеСодержимое);
	КонецЕсли;
КонецЦикла;

ВнешняяКомпонента.ЭмуляцияНажатияКлавиши(Клавиша, Флаги);

Альтернативный вариант вызова функции, в первом параметра передаётся строка в формате JSON, представляющая собой массив с кодами виртуальных клавиш. Второй параметр при этом необязателен и игнорируется.

ТекстJSON = "[91, 69]"; // Win+E
ВнешняяКомпонента.ЭмуляцияНажатияКлавиши(ТекстJSON);

Эмулирует последовательный ввод пользователем текста.

ВнешняяКомпонента.ЭмуляцияВводаТекста("Текст коментария", 100);

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

Параметры процедуры:

  • Цвет (необязательный), Тип: Целое число
  • Радиус (необязательный), Тип: Целое число
  • Толщина (необязательный), Тип: Целое число
  • Задержка (необязательный), Тип: Целое число
  • Прозрачность (необязательный), Тип: Целое число
ВнешняяКомпонента.ПоказатьНажатиеМыши(255, 30, 12, 12, 127);

Включение режима, при котором каждое нажатие мыши сопровождается визуальным эффектом в виде расходящихся концентрических кругов.

Параметры процедуры:

  • Цвет (необязательный), Тип: Целое число
  • Радиус (необязательный), Тип: Целое число
  • Толщина (необязательный), Тип: Целое число
  • Задержка (необязательный), Тип: Целое число
  • Прозрачность (необязательный), Тип: Целое число
ВнешняяКомпонента.ВизуализацияНажатияМыши(255, 30, 12, 12, 127);

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

ВнешняяКомпонента.ПоказатьВизуализациюНажатияМыши();

Отключение режима, при котором каждое нажатие мыши сопровождается визуальным эффектом.

ВнешняяКомпонента.ПрекратитьВизуализациюНажатияМыши();

Рисует на экране монитора прямоугольник заданного цвета и прозрачности. Параметры определяют также толщину контура и длительность отображения фигуры.

ЦветКакЧисло = Цвет.Красный + Цвет.Зеленый * 256 + Цвет.Синий * 65536;
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло);
ВремСтруктура.Вставить("thickness", Толщина);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("duration", Длительность);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
НастройкиРисования = ЗаписьJSON.Закрыть();
ВнешняяКомпонента.НачатьВызовНарисоватьПрямоугольник(
	Новый ОписаниеОповещения, НастройкиРисования, 
	ПозицияСлева, ПозицияСверху, ШиринаФигуры, ВысотаФигуры);

Рисует на экране монитора эллипс заданного цвета и прозрачности. Параметры определяют также толщину контура и длительность отображения фигуры.

ВнешняяКомпонента.НачатьВызовНарисоватьЭллипс(
	Новый ОписаниеОповещения, НастройкиРисования, 
	ПозицияСлева, ПозицияСверху, ШиринаФигуры, ВысотаФигуры);

Рисует между двумя точками на экране прямую стрелку заданного цвета и прозрачности. Параметры определяют толщину контура, анимацию и длительность отображения фигуры.

ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло);
ВремСтруктура.Вставить("thickness", Толщина);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("frameCount", ЧислоКадровАнимации);
ВремСтруктура.Вставить("frameDelay", ЗадержкаАнимацииКадра);
ВремСтруктура.Вставить("duration", Длительность);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
НастройкиРисования = ЗаписатьJSON(ЗаписьJSON, Данные);
ВнешняяКомпонента.НачатьВызовНарисоватьСтрелку(
	Новый ОписаниеОповещения, НастройкиРисования, x1, y1, x2, y2);

Рисует между двумя точками на экране искривленную стрелку заданного цвета и прозрачности. Параметры определяют толщину контура, анимацию и длительность отображения фигуры. Количество точек в массиве должно быть кратным (3 * N + 1).

МассивТочек = Новый Массив;
МассивТочек.Добавить(Новый Структура("x,y", 100, 500));
МассивТочек.Добавить(Новый Структура("x,y", 300, 500));
МассивТочек.Добавить(Новый Структура("x,y", 300, 700));
МассивТочек.Добавить(Новый Структура("x,y", 500, 700));
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ТекстJSON = ЗаписатьJSON(ЗаписьJSON, МассивТочек);
ВнешняяКомпонента.НачатьВызовНарисоватьСтрелку(
	Новый ОписаниеОповещения, НастройкиРисования, ТекстJSON);

Отображает на экране видеоэффект затенения всего экрана за исключением определенной области. Оборажает подсказку и стрелку от текста подсказки к выделенной области.

ЦветКакЧисло = Цвет.Красный + Цвет.Зеленый * 256 + Цвет.Синий * 65536;
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло);
ВремСтруктура.Вставить("thickness", Толщина);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("duration", Длительность);
ВремСтруктура.Вставить("fontName", ШрифтНадписи.Имя);
ВремСтруктура.Вставить("fontSize", ШрифтНадписи.Размер);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
НастройкиРисования = ЗаписьJSON.Закрыть();
ВнешняяКомпонента.НачатьВызовНарисоватьТень(
	Новый ОписаниеОповещения, НастройкиРисования, 
	ПозицияСлева, ПозицияСверху, ШиринаФигуры, ВысотаФигуры, ТекстПодсказки);

Отображает на экране видеоэффект подсказки для точки по указанным координатам.

ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("color", ЦветКакЧисло(ЦветКонтура));
ВремСтруктура.Вставить("background", ЦветКакЧисло(ЦветФона));
ВремСтруктура.Вставить("fontColor", ЦветКакЧисло(ЦветТекста));
ВремСтруктура.Вставить("fontName", ШрифтНадписи.Имя);
ВремСтруктура.Вставить("fontSize", ШрифтНадписи.Размер);
ВремСтруктура.Вставить("radius", РадиусЗакругления);
ВремСтруктура.Вставить("thickness", ТолщинаКонтура);
ВремСтруктура.Вставить("duration", Длительность);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
НастройкиРисования = ЗаписьJSON.Закрыть();
ВнешняяКомпонента.НачатьВызовПоказатьПодсказку(
	Новый ОписаниеОповещения, НастройкиРисования, 
	ПозицияСлева, ПозицияСверху, ТекстПодсказки);

Воспроизводит WAV-файл синхронно или асинхронно. Вызов без параметров останавливает воспроизведение.

Параметры функции:

  • ИмяФайла (необязательный), Тип: Строка
  • Асинхронно (необязательный), Тип: Булево

Возвращаемое значение отсутствует.

ВнешняяКомпонента.ВоспроизвестиЗвук("sound.wav", Истина);

Воспроизводит мультимедиа файл в асинхронном режиме в отдельном потоке.

Параметры функции:

  • ИмяФайла (обязательный), Тип: Строка
  • Идентификатор (необязательный), Тип: Строка

Возвращаемое значение отсутствует.

Идентификатор = Строка(Новый УникальныйИдентификатор);
ВнешняяКомпонента.ВоспроизвестиМедиа("sound.mp3", Идентификатор);

Возвращает статус воспроизведения мультимедиа файла по его идентификатору.

Прерывает воспроизведение мультимедиа файла по его идентификатору.

Выполняет произвольную мультимедиа команду, возвращая результат в виде строки.

Параметры функции:

  • Команда (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Содержит данные, полученные как результат выполнения команды.

Получает снимок экрана или активного окна, в зависимости от переданного параметра.

Параметры функции:

  • Режим (обязательный), Тип: Целое число
    • 0 - Чтобы сделать снимок всего экрана
    • 1 - Чтобы сделать снимок области активного окна

Тип возвращаемого значения: Двоичные данные

  • Возвращает картинку в формате PNG.
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокЭкрана(0);

Получает снимок области экрана по координатам.

Параметры функции:

  • X (обязательный), Тип: Целое число (координата слева)
  • Y (обязательный), Тип: Целое число (координата сверху)
  • W (обязательный), Тип: Целое число (ширина области экрана)
  • H (обязательный), Тип: Целое число (высота области экрана)

Тип возвращаемого значения: Двоичные данные

  • Возвращает картинку в формате PNG.
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокОбласти(200, 200, 800, 600);

Получает снимок произвольного окна по его дескриптору.

Параметры функции:

  • ДескрипторОкна (обязательный), Тип: Целое число
    • 0 - Чтобы сделать снимок активного окна

Тип возвращаемого значения: Двоичные данные

  • Возвращает картинку в формате PNG.
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокОкна(ДескрипторОкна);

Получает снимок верхнего окна экземпляра 1С:Предприятие по идентификатору процесса.

Параметры функции:

  • ИдентификаторПроцесса (обязательный), Тип: Целое число
    • Идентификатор процесса приложения 1С:Предприятие

Тип возвращаемого значения: Двоичные данные

  • Возвращает картинку в формате PNG.
ДвоичныеДанные = ВнешняяКомпонента.ПолучитьСнимокПроцесса(ИдентификаторПроцесса);

Рекурсивный поиск файлов по маске и содержимому.

Параметры функции:

  • Директория (обязательный), Тип: Строка
    • Начальная директория для поиска файлов
  • МаскаПоиска (обязательный), Тип: Строка
    • Маска поиска файлов, например: *.txt
  • ИскомыйТекст (обязательный), Тип: Строка
    • Искомый тект для поиска по содержимому файла
  • ИгнорироватьРегистр (необязательный), Тип: Строка
    • Проверка на соответствие регистра искомого текста

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Массив из элементов типа Структура с информацией о найденых файлах:
    • name - имя файла (Строка)
    • path - полный путь файла (Строка)
    • size - размер файла в байтах (Число)
    • date - дата модификации файла (Дата)
ТекстJSON = ВнешняяКомпонента.НайтиФайлы(Директория, МаскаПоиска, ИскомыйТекст, ИгнорироватьРегистр);
Данные = ПрочитатьСтрокуJSON(ТекстJSON);
СписокФайлов.Очистить();
Если ТипЗнч(Данные) = Тип("Массив") Тогда
	Для каждого Стр Из Данные Цикл
		НоваяСтр = СписокФайлов.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтр, Стр);
	КонецЦикла;
КонецЕсли;

Очищает буфер обмена.

ВнешняяКомпонента.ОчиститьБуферОбмена();

Получает элементы UI Automation в виде древовидной структуры по идентификатору процесса, либо идентификатору родительского элемента. Второй параметр ограничивает грубину рекурсии получения дочерних элементов.

Параметры функции:

  • ИдентификаторПроцесса (обязательный), Тип: Целое число
  • Глубина (необязательный), Тип: Целое число

Вариант вызова функции:

  • ИдентификаторРодителя (обязательный), Тип: Строка
  • Глубина (необязательный), Тип: Целое число

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем массив объектов типа Структура, каждый из которых также может содержать массив дочерних элементов.
ТекстJSON = ВнешняяКомпонента.ПолучитьЭлементы(ИдентификаторПроцесса);

Осуществляет поиск элементов UI Automation по условиям отбора.

Параметры функции:

  • УсловиеОтбора (обязательный), Тип: Строка формата JSON

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем массив объектов типа Структура, содержащий свойства найденных элементов.
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("ProcessId", ИдентификаторПроцесса);
ВремСтруктура.Вставить("Parent", ИдентификаторРодителя);
ВремСтруктура.Вставить("Name", ИмяЭлемента);
ВремСтруктура.Вставить("ControlType", "Button");
ВремСтруктура.Вставить("LegacyIAccessibleHelp", "Расширенная подсказка элемента");
ВремСтруктура.Вставить("LegacyIAccessibleKeyboardShortcut", "F12");
УсловиеОтбора = ЗаписатьСтрокуJSON(ВремСтруктура);
ТекстJSON = ВнешняяКомпонента.НайтиЭлементы(УсловиеОтбора);

Получает элемент UI Automation по его идентификатору. Идентификатор элемента уникален для каждого экземпляра приложения.

Параметры функции:

  • ИдентификаторЭлемента (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного элемента.
ТекстJSON = ВнешняяКомпонента.ЭлементПоИдентификатору(ИдентификаторЭлемента);

Получает UI Automation по идентификатору элемента его родительский элемент. Идентификатор элемента уникален для каждого экземпляра приложения.

Параметры функции:

  • ИдентификаторЭлемента (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного родительского элемента.
ТекстJSON = ВнешняяКомпонента.ПолучитьРодителяЭлемента(ИдентификаторЭлемента);

Получает по идентификатору элемента следующий ближайший соседний элемент UI Automation в пределах подчинения одному общему родителю.

Параметры функции:

  • ИдентификаторЭлемента (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного соседнего элемента.
ТекстJSON = ВнешняяКомпонента.ПолучитьСледующийЭлемент(ИдентификаторЭлемента);

Получает по идентификатору элемента предыдущий ближайший соседний элемент UI Automation в пределах подчинения одному общему родителю.

Параметры функции:

  • ИдентификаторЭлемента (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного соседнего элемента.
ТекстJSON = ВнешняяКомпонента.ПолучитьПредыдущийЭлемент(ИдентификаторЭлемента);

Активирует элемент UI Automation по его идентификатору.

Параметры функции:

  • ИдентификаторЭлемента (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного элемента.
ВнешняяКомпонента.АктивироватьЭлемент(ИдентификаторЭлемента);

Выполняет действие по умолчанию (обычно это нажатие на кнопку) для элемента UI Automation.

Параметры функции:

  • ИдентификаторЭлемента (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Содержит строку с текстом в формате JSON, при чтении которого получаем объект типа Структура, содержащий свойства полученного элемента.
ВнешняяКомпонента.ВызватьЭлемент(ИдентификаторЭлемента);

Получает значение для элемента UI Automation.

Параметры функции:

  • ИдентификаторЭлемента (обязательный), Тип: Строка

Тип возвращаемого значения: Строка

  • Возвращает значение элемента.
ЗначениеЭлемента = ВнешняяКомпонента.ПолучитьЗначениеЭлемента(ИдентификаторЭлемента);

Устанавливает значение для элемента UI Automation.

Параметры функции:

  • ИдентификаторЭлемента (обязательный), Тип: Строка
  • НовоеЗначение (обязательный), Тип: Строка
ВнешняяКомпонента.УстановитьЗначениеЭлемента(ИдентификаторЭлемента, НовоеЗначение);

Показывает независимое окно для прерывания пользователем продолжительных действий.

Параметры процедуры:

  • Параметры (обязательный), Тип: Строка
  • Заголовок (обязательный), Тип: Строка
  • Надпись (обязательный), Тип: Строка
ВремСтруктура = Новый Структура;
ВремСтруктура.Вставить("identifier", Строка(УникальныйИдентификатор));
ВремСтруктура.Вставить("color", ЦветКакЧисло(ЦветКонтура));
ВремСтруктура.Вставить("background", ЦветКакЧисло(ЦветФона));
ВремСтруктура.Вставить("buttonColor", ЦветКакЧисло(ЦветКнопки));
ВремСтруктура.Вставить("iconColor", ЦветКакЧисло(ЦветИконки));
ВремСтруктура.Вставить("fontColor", ЦветКакЧисло(ЦветТекста));
ВремСтруктура.Вставить("fontName", ШрифтНадписи.Имя);
ВремСтруктура.Вставить("fontSize", ШрифтНадписи.Размер);
ВремСтруктура.Вставить("transparency", Прозрачность);
ВремСтруктура.Вставить("thickness", ТолщинаКонтура);
ТекстJSON = ЗаписатьСтрокуJSON(ВремСтруктура);

ВнешняяКомпонента.ПоказатьОкноПрерывания(ТекстJSON, ТекстНадписи, "Стоп");

Закрывает открытое ранее окно прерывания продолжительных действий.

ВнешняяКомпонента.ЗакрытьОкноПрерывания();