Здравствуйте
Сразу хочу предупредить — в COM технологиях я разбираюсь очень плохо, поэтому заранее прошу прощения за возможные некорректности.
Передо мной стоит следующая задача:
Есть некоторое приложение (среда разработки), в которой возможно программирование на Visual Basic
Среда автоматически генерирует хуки, в которые я могу вписывать свой код, соответственно я этим сильно ограничен.
Как мне кажется, вся работа внутри данного хука происходит в рамках некоторого существующего OLE объекта.
То есть я могу вызывать его методы, которые задокументированы...
Мне хотелось бы:
1. убедиться. что это действительно так
2. получить референс на этот объект (AddRef не срабатывает)
3. Передать этот рефернс в другое приложение — возможно тоже реализованнное на Visual Basic но уже в среде Visual Studio и, соответственно тоже в виде OLE объекта
Буду очень признателен, за идей, которые могут поступить
Re: Передача OLE объекта в другое приложение
От:
Аноним
Дата:
22.12.05 16:00
Оценка:
Здравствуйте, art_, Вы писали:
_>Здравствуйте _>Сразу хочу предупредить — в COM технологиях я разбираюсь очень плохо, поэтому заранее прошу прощения за возможные некорректности.
_>Передо мной стоит следующая задача: _>Есть некоторое приложение (среда разработки), в которой возможно программирование на Visual Basic _>Среда автоматически генерирует хуки, в которые я могу вписывать свой код, соответственно я этим сильно ограничен. _>Как мне кажется, вся работа внутри данного хука происходит в рамках некоторого существующего OLE объекта. _>То есть я могу вызывать его методы, которые задокументированы... _>Мне хотелось бы: _>1. убедиться. что это действительно так _>2. получить референс на этот объект (AddRef не срабатывает) _>3. Передать этот рефернс в другое приложение — возможно тоже реализованнное на Visual Basic но уже в среде Visual Studio и, соответственно тоже в виде OLE объекта
_>Буду очень признателен, за идей, которые могут поступить
Здравствуйте, art_, Вы писали:
_>Здравствуйте _>Сразу хочу предупредить — в COM технологиях я разбираюсь очень плохо, поэтому заранее прошу прощения за возможные некорректности.
_>Передо мной стоит следующая задача: _>Есть некоторое приложение (среда разработки), в которой возможно программирование на Visual Basic _>Среда автоматически генерирует хуки, в которые я могу вписывать свой код, соответственно я этим сильно ограничен. _>Как мне кажется, вся работа внутри данного хука происходит в рамках некоторого существующего OLE объекта. _>То есть я могу вызывать его методы, которые задокументированы... _>Мне хотелось бы: _>1. убедиться. что это действительно так _>2. получить референс на этот объект (AddRef не срабатывает)
Не совсем понятно, причем здесь( только ) AddRef и почему он не срабатывает?
_>3. Передать этот рефернс в другое приложение — возможно тоже реализованнное на Visual Basic но уже в среде Visual Studio и, соответственно тоже в виде OLE объекта
_>Буду очень признателен, за идей, которые могут поступить
Из этого хука ты можешь создавать какие-либо COM-объекты? Если да, то первое, что мне приходит в голову, это написание своего COM-объекта( скорее всего singleton'a, что-бы и объект, созданный в хуке, и в нужном приложении совпадали ), который бы принимал IUnknown( IDispatch? ) этого хука и отдавал его в нужное тебе приложение.
Здравствуйте, Аноним, Вы писали:
А>Среда автоматически генерирует хуки??? Как это?
В приложении жестко прошиты места, в которые можно вставить свой код. Это изначально пустые функции VB, содержимое которых я могу реализовать сам. А вот какие это функции, кто их вызывает и когда — решает система. Я этого не вижу и не могу изменить.
Мне хочется каким нибудь образом выцепить OLE объект, который как мне кажется существует в этот момент и передать его во вне данного приложения, и таким образом получить большую гибкость.
Здравствуйте, Константин Ленин, Вы писали:
КЛ>Не совсем понятно, причем здесь( только ) AddRef и почему он не срабатывает?
Мне тоже, я предупреждал что в технологиях VB и COM разбираюсь слабо — было предположение, что при помощи AddRef получиться создать дубль объекта....
_>>3. Передать этот рефернс в другое приложение — возможно тоже реализованнное на Visual Basic но уже в среде Visual Studio и, соответственно тоже в виде OLE объекта
_>>Буду очень признателен, за идей, которые могут поступить
КЛ>Из этого хука ты можешь создавать какие-либо COM-объекты? Если да, то первое, что мне приходит в голову, это написание своего COM-объекта( скорее всего singleton'a, что-бы и объект, созданный в хуке, и в нужном приложении совпадали ), который бы принимал IUnknown( IDispatch? ) этого хука и отдавал его в нужное тебе приложение.
Не мог бы ты привести пример того как это сделать на ВБ? Меня интересует именно момент передачи себя
Если привести аналогию из С++, там можно сделать примерно следующее
MyOwnClass *my = new MyOwnClass( this )
Здравствуйте, art_, Вы писали:
_>Есть некоторое приложение (среда разработки), в которой возможно программирование на Visual Basic _>Среда автоматически генерирует хуки, в которые я могу вписывать свой код, соответственно я этим сильно ограничен.
Это скорее всего не хуки (хуки это нечто совсем другое), а обработчики событий..
Что за среда-то?
_>Как мне кажется, вся работа внутри данного хука происходит в рамках некоторого существующего OLE объекта. _>То есть я могу вызывать его методы, которые задокументированы...
Как выглядит использование (вызовы) этого OLE объекта (маленький кусок кода) ?
_>Мне хотелось бы: _>2. получить референс на этот объект (AddRef не срабатывает)
Мы же вроде про VB говорим? Какокй AddRef?
_>3. Передать этот рефернс в другое приложение — возможно тоже реализованнное на Visual Basic но уже в среде Visual Studio и, соответственно тоже в виде OLE объекта
А среда этого не предусматривает?
Т.е. может быть можно сделать это вполне легально, как например, GetObject("Excel.Application") ?
Здравствуйте, art_, Вы писали:
_>Здравствуйте, Константин Ленин, Вы писали:
КЛ>>Не совсем понятно, причем здесь( только ) AddRef и почему он не срабатывает? _>Мне тоже, я предупреждал что в технологиях VB и COM разбираюсь слабо — было предположение, что при помощи AddRef получиться создать дубль объекта....
_>>>3. Передать этот рефернс в другое приложение — возможно тоже реализованнное на Visual Basic но уже в среде Visual Studio и, соответственно тоже в виде OLE объекта
_>>>Буду очень признателен, за идей, которые могут поступить
КЛ>>Из этого хука ты можешь создавать какие-либо COM-объекты? Если да, то первое, что мне приходит в голову, это написание своего COM-объекта( скорее всего singleton'a, что-бы и объект, созданный в хуке, и в нужном приложении совпадали ), который бы принимал IUnknown( IDispatch? ) этого хука и отдавал его в нужное тебе приложение. _>Не мог бы ты привести пример того как это сделать на ВБ? Меня интересует именно момент передачи себя _>Если привести аналогию из С++, там можно сделать примерно следующее _>MyOwnClass *my = new MyOwnClass( this )
_>Вот момент с this — мне наиболее непонятен ...
Здравствуйте, Константин Ленин, Вы писали:
КЛ>Здравствуйте, art_, Вы писали:
_>>Здравствуйте, Константин Ленин, Вы писали:
КЛ>>>Не совсем понятно, причем здесь( только ) AddRef и почему он не срабатывает? _>>Мне тоже, я предупреждал что в технологиях VB и COM разбираюсь слабо — было предположение, что при помощи AddRef получиться создать дубль объекта....
_>>>>3. Передать этот рефернс в другое приложение — возможно тоже реализованнное на Visual Basic но уже в среде Visual Studio и, соответственно тоже в виде OLE объекта
_>>>>Буду очень признателен, за идей, которые могут поступить
КЛ>>>Из этого хука ты можешь создавать какие-либо COM-объекты? Если да, то первое, что мне приходит в голову, это написание своего COM-объекта( скорее всего singleton'a, что-бы и объект, созданный в хуке, и в нужном приложении совпадали ), который бы принимал IUnknown( IDispatch? ) этого хука и отдавал его в нужное тебе приложение. _>>Не мог бы ты привести пример того как это сделать на ВБ? Меня интересует именно момент передачи себя _>>Если привести аналогию из С++, там можно сделать примерно следующее _>>MyOwnClass *my = new MyOwnClass( this )
_>>Вот момент с this — мне наиболее непонятен ...
КЛ>Я vb не знаю.