Re[3]: Передача OLE объекта в другое приложение
От: Константин Ленин  
Дата: 23.12.05 14:21
Оценка:
Здравствуйте, 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();


Что-то типа этого, вот только не знаю как ты собираешься его юзать и что там с маршалингом
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.