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 используется только один для всех коннекторов. Благодаря этому при падении скрипта / закрытии процесса в памяти не остаётся инстансов открытых окон кроме одного, обеспечивающего работу коннекторов.
В аттаче сам WSC + пара сэмплов.
UPD: 28.01.2021 - Оптимизировал код. Убрал лишние вызовы и функции.
UPD: 10.02.2021 - Исправил код преобразования передаваемых данных.
UPD: 20.02.2021 - Залил код на GitHub ссылка
Чтобы отправить ответ, вы должны войти или зарегистрироваться