Re: WSH: обмен данными и объектами между скриптами — 2
omegastripes
оберните ADODB.Recordset в функции, их вызывайте удаленно.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → WSH: обмен данными и объектами между скриптами — 2
Чтобы отправить ответ, вы должны войти или зарегистрироваться
omegastripes
оберните ADODB.Recordset в функции, их вызывайте удаленно.
Крутая вещь. При попытке доступа к объекту уже завершенного процесса происходит ошибка "Компьютер удаленного сервера не существует..". Если это работает по удаленке, вообще жесть!:)
Что-то давно я не постил ничего на форуме. Случилось так, что мне опять потребовался код обмена данными между процессами. Открыл эту тему на форуме и понял, что есть что поменять и доработать. В текущей реализации не было:
1) встроенной возможности работать с событиями при изменении данных в хранилище
2) нормального метода проверки существования получателя
3) нормального контроля за созданными окнами (в случае аварийного закрытия скрипта в памяти оставались инстансы окон)
Решил переделать и доработать.
Изменения:
1) Переименовал объект в Shell.Connector. Это название показалось мне более логичным в виду внесённых изменений.
2) Собрал функционал в компонент WSC для удобства использования в разных языках JS / VBS и т.п. Изменил принцип работы.
Методы:
postMessage(connectorId,data) - Отправка сообщения коннектору получателю
connectorId <in> [String] - Идентификатор коннектора получателя
data <in> [String] - Данные для передачи
connect(connectorId) - Метод для проверки доступности указанного коннектора
connectorId <in> [String] - Идентификатор проверяемого коннектора
Свойства:
id <out> [String] - Идентификатор текущего коннектора
onmessage <in> [Object] - Задаёт ссылку на объект обратного вызова (функцию).
Во время срабатывания события в функцию/метод обратного вызова передаёт 2 параметра (connectorId, data)
3) Идентификатор коннектора генерируется как уникальный GUID и задаётся внутри самого объекта
4) Вместо использования отдельных инстансов Shell Browser Window используется только один для всех коннекторов. Благодаря этому при падении скрипта / закрытии процесса в памяти не остаётся инстансов открытых окон кроме одного, обеспечивающего работу коннекторов.
UPD: 28.01.2021 - Оптимизировал код. Убрал лишние вызовы и функции.
UPD: 10.02.2021 - Исправил код преобразования передаваемых данных.
UPD: 20.02.2021 - Залил код на GitHub ссылка
UPD: 20.02.2021 - Залил код на GitHub ссылка
Спасибо огромное!
Есть необходимость сохранять в window свои данные, аналогично этому:
window.putProperty(window.hWnd,'Shell.Connector');
т.е. иметь возможность сохранять свои данные для всех "коннекторов".
Соответственно, можно ли в putProperty передавать произвольные параметры?
yyk, в принципе, да. Но я потихоньку ушёл от этой идеи. Так как тогда нужно контролировать актуальность ссылок на объекты. Поэтому перешёл на передачу данных через сериализованный JSON. А теперь и вовсе перебрался на использование NTFS стримов.
Примерчик тут
В JScript не соображаю, пробую запустить этот код.
На строке:
this.appWindow = GlobalContainer.getInstance(signature);
Объект не поддерживает это свойство или метод
Запускаю файлом JS в виндовс 10 64бит.
ап: Пардон туплю, всё работает. Код для примера надо запускать после основного кода.
fkhlamingo, думаю вам проще будет разобраться в готовом примере, который я выложил на GitHub - ссылка.
ап: Пардон туплю, всё работает. Код для примера надо запускать после основного кода.
Разобрался.
думаю вам проще будет разобраться в готовом примере, который я выложил на GitHub
Спасибо за ответ, подскажите в каком файле смотреть.
Кстати в другой теме обсуждаем с вами Shell.Application, так вот этот код у меня добавляет окно в коллекцию. На досуге ещё потестирую, но надеюсь решить свой вопрос этим методом.
На GitHub я выложил несколько примеров:
1) Сам доработанный коннектор (с поддержкой события прихода данных) и примеры - https://github.com/diqipib/Shell.Connector
2) Применение коннектора в Worker-ах - https://github.com/diqipib/WSH-Worker
Xameleon
Большое вам спасибо, очень помогли!
с поддержкой события прихода данных
Опередили мой вопрос, буду разбираться.
Чтобы отправить ответ, вы должны войти или зарегистрироваться