Здравствуйте, Константин Ленин, Вы писали:
КЛ>Здравствуйте, art_, Вы писали:
_>>Здравствуйте, Константин Ленин, Вы писали:
КЛ>>>Не совсем понятно, причем здесь( только ) AddRef и почему он не срабатывает?
_>>Мне тоже, я предупреждал что в технологиях VB и COM разбираюсь слабо — было предположение, что при помощи AddRef получиться создать дубль объекта....
_>>>>3. Передать этот рефернс в другое приложение — возможно тоже реализованнное на Visual Basic но уже в среде Visual Studio и, соответственно тоже в виде OLE объекта
_>>>>Буду очень признателен, за идей, которые могут поступить
КЛ>>>Из этого хука ты можешь создавать какие-либо COM-объекты? Если да, то первое, что мне приходит в голову, это написание своего COM-объекта( скорее всего singleton'a, что-бы и объект, созданный в хуке, и в нужном приложении совпадали ), который бы принимал IUnknown( IDispatch? ) этого хука и отдавал его в нужное тебе приложение.
_>>Не мог бы ты привести пример того как это сделать на ВБ? Меня интересует именно момент передачи себя
_>>Если привести аналогию из С++, там можно сделать примерно следующее
_>>MyOwnClass *my = new MyOwnClass( this )
_>>Вот момент с this — мне наиболее непонятен ...
КЛ>Я vb не знаю.
КЛ>
КЛ>//.idl
КЛ>interface ISomeObjectHolder : IDispatch
КЛ>{
КЛ> HRESULT SetObject( [in] IUnknown* );
КЛ> HRESULT GetObject( [out] IUnknown* );
КЛ>}
КЛ>//.h
КЛ>class ATL_NO_VTABLE CSomeObjectHolder :
КЛ> public CComObjectRootEx<CComMultiThreadModel>,
КЛ> public CComCoClass<CSomeObjectHolder, &CLSID_SomeObjectHolder>,
КЛ> ....
КЛ>{
КЛ>public:
КЛ> CSomeObjectHolder(){}
КЛ>DECLARE_REGISTRY_RESOURCEID(IDR_BITSUPLOADMANAGER)
КЛ>// Singleton object
КЛ>DECLARE_CLASSFACTORY_SINGLETON(CBITSUploadManager)
КЛ>....
КЛ>private:
КЛ> IUnknownPtr m_pObject;
КЛ>
КЛ>В твоем хэндлере( хуке )
КЛ>
КЛ>ISomeObjectHolderPtr pHolder(CLSID_SomeObjectHolder);
КЛ>pHolder->SetObject( this/*???*/ );
КЛ>
КЛ>В студии
КЛ>
КЛ>ISomeObjectHolderPtr pHolder(CLSID_SomeObjectHolder);
КЛ>IUnknownPtr = pHolder->GetObject();
КЛ>
КЛ>Что-то типа этого, вот только не знаю как ты собираешься его юзать и что там с маршалингом
Еще есть такое понятие как ROT