101

Re: WSH: обмен данными и объектами между скриптами — 2

omegastripes
оберните ADODB.Recordset в функции, их вызывайте удаленно.

102 (изменено: unknown, 2020-02-05 06:35:32)

Re: WSH: обмен данными и объектами между скриптами — 2

Крутая вещь. При попытке доступа к объекту уже завершенного процесса происходит ошибка "Компьютер удаленного сервера не существует..". Если это работает по удаленке, вообще жесть!:)

Post's attachments

2020-02-05_091103.jpg
2020-02-05_091103.jpg 45.18 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

103 (изменено: Xameleon, 2021-02-20 12:27:48)

Re: WSH: обмен данными и объектами между скриптами — 2

Что-то давно я не постил ничего на форуме. Случилось так, что мне опять потребовался код обмена данными между процессами. Открыл эту тему на форуме и понял, что есть что поменять и доработать. В текущей реализации не было:

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 ссылка

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !