Здравствуйте, Иван Андреев, Вы писали:
...
Попробовал сделать Singleton как Exe сервер:
class ATL_NO_VTABLE CObj :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CObj, &CLSID_Obj>,
public IConnectionPointContainerImpl<CObj>,
public IDispatchImpl<IObj, &IID_IObj, &LIBID_SINGLETONEXELib>,
public CProxy_IObjEvents< CObj >
{
DECLARE_CLASSFACTORY_SINGLETONMARSH(CObj);
public:
...
STDMETHOD (MakeEvent (IN BSTR bsName, IN BSTR bsParam, OUT long *pResult));
STDMETHOD (put_field (IN long newVal));
STDMETHOD (get_field (OUT long *pVal));
long m_lfield;
...
}
MakeEvent приводит к генерации события UsedElement (bsName, bsParam)
field — свойство, позволяющее читать и устанавливать внутреннюю переменную m_lfield
Не получается сделать 2 вещи:
1. Хочу одним скриптом (SetNum10.Js) установить значение внутренней переменной в 10, а другим скриптом (ReadNum.Js) прочитать это значение. Сейчас ReadNum.Js получает начальное значение, устанавливаемое в конструкторе CObj вне зависимости от вызова SetNum10.Js
Как побороть? Ведь это значит что объект все-таки не является синглтоном?
2. Хочу запустив N скриптов и вызвав метод MakeEvent в одном из них, получить событие UsedElement в каждом из скриптов. Как добиться такого? Сейчас событие получаю только в том скрипте, в котором вызван метод MakeEvent...
Заранее благодарен за ответы.