Как получить IUnknown ActiveX контрола?
От: VB Украина  
Дата: 12.10.05 13:52
Оценка:
Приложение Х написано третьей компанией. Это приложение содержит ActiveX контрол. Мне надо изменять содержимое контрола. Это можно делать посредством интерфейсов этого контрола. Как получить указатель на IUnknown этого контрола если известен только handle окна контрола? Пробовал использовать AtlAxGetControl() и CWnd:GetControlUnknown(), не помогает.
Re: Как получить IUnknown ActiveX контрола?
От: slava_529872  
Дата: 12.10.05 14:14
Оценка:
Здравствуйте, VB, Вы писали:

VB>Приложение Х написано третьей компанией. Это приложение содержит ActiveX контрол. Мне надо изменять содержимое контрола. Это можно делать посредством интерфейсов этого контрола. Как получить указатель на IUnknown этого контрола если известен только handle окна контрола? Пробовал использовать AtlAxGetControl() и CWnd:GetControlUnknown(), не помогает.


найди DLL или OCX откуда этот контрол грузится и "OLE COM Object Viewer" посмотри все обявления библиотеки типов. Там ты найдеш все доступные сервисы. А IUnknown можно узнать во время создания этого элемента. По-другому вряд-ли....посмотри, у тебя в Классе-контейнере должен быть член-указатель на этот контрол....Если нет — заведи...и создавай контрол через CreateControl.
Re: Как получить IUnknown ActiveX контрола?
От: algol Россия about:blank
Дата: 12.10.05 15:28
Оценка:
Здравствуйте, VB, Вы писали:

VB>Как получить указатель на IUnknown этого контрола если известен только handle окна контрола?


Имхо в общем случае никак.

VB>Пробовал использовать AtlAxGetControl() и CWnd:GetControlUnknown(), не помогает.


Если в приложении контейнер ActiveX сделан не на ATL, то это не сработает. AtlAxGetControl работает на посылке ATL-овского сообщения окну.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.