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-03-07 15:39:46)

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 используется только один для всех коннекторов. Благодаря этому при падении скрипта / закрытии процесса в памяти не остаётся инстансов открытых окон кроме одного, обеспечивающего работу коннекторов.


UPD: 28.01.2021 - Оптимизировал код. Убрал лишние вызовы и функции.
UPD: 10.02.2021 - Исправил код преобразования передаваемых данных.
UPD: 20.02.2021 - Залил код на GitHub ссылка

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

104

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

Xameleon пишет:

UPD: 20.02.2021 - Залил код на GitHub ссылка

Спасибо огромное!
Есть необходимость сохранять в window свои данные, аналогично этому:

window.putProperty(window.hWnd,'Shell.Connector');

т.е. иметь возможность сохранять свои данные для всех "коннекторов".
Соответственно, можно ли в putProperty передавать произвольные параметры?

105 (изменено: Xameleon, 2021-08-16 18:55:15)

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

yyk, в принципе, да. Но я потихоньку ушёл от этой идеи. Так как тогда нужно контролировать актуальность ссылок на объекты. Поэтому перешёл на передачу данных через сериализованный JSON. А теперь и вовсе перебрался на использование NTFS стримов.

Примерчик тут

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

106 (изменено: fkhlamingo, Вчера 13:45:56)

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

В JScript не соображаю, пробую запустить этот код.
На строке:

this.appWindow = GlobalContainer.getInstance(signature);

Объект не поддерживает это свойство или метод

Запускаю файлом JS в виндовс 10 64бит.

ап: Пардон туплю, всё работает. Код для примера надо запускать после основного кода.

107 (изменено: Xameleon, Вчера 13:50:20)

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

fkhlamingo, думаю вам проще будет разобраться в готовом примере, который я выложил на GitHub - ссылка.

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

108

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

fkhlamingo пишет:

ап: Пардон туплю, всё работает. Код для примера надо запускать после основного кода.

Разобрался.

Xameleon пишет:

думаю вам проще будет разобраться в готовом примере, который я выложил на GitHub

Спасибо за ответ, подскажите в каком файле смотреть.

Кстати в другой теме обсуждаем с вами Shell.Application, так вот этот код у меня добавляет окно в коллекцию. На досуге ещё потестирую, но надеюсь решить свой вопрос этим методом.

109 (изменено: Xameleon, Вчера 13:53:31)

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

На GitHub я выложил несколько примеров:

1) Сам доработанный коннектор (с поддержкой события прихода данных) и примеры - https://github.com/diqipib/Shell.Connector
2) Применение коннектора в Worker-ах - https://github.com/diqipib/WSH-Worker

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

110

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

Xameleon
Большое вам спасибо, очень помогли!

Xameleon пишет:

с поддержкой события прихода данных

Опередили мой вопрос, буду разбираться.