Работа с COM объектом MapInfo (интерфейс IDataObject)
От: DEMON_UN  
Дата: 02.11.08 18:52
Оценка:
Здравствуйте.

Непосредственно с COM объектом проблем нет, когда приходится выполнять "стандартные" действия, но вот (как я понимаю это единственная возможность заполучить граф. объект, исключая экспорт) при попытке получить ссылку на интерфейс получается ...No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). Дейсвую по учебнику, т.е. используя явное приведение типов:

MapInfo.MapInfoApplicationClass m_object = new MapInfo.MapInfoApplicationClass();
...
IDataObject dataObject;
dataObject = (IDataObject) m_object;
...
Re: Работа с COM объектом MapInfo (интерфейс IDataObject)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.11.08 19:29
Оценка:
Здравствуйте, DEMON_UN, Вы писали:

Ну значит не поддерживает твой объект интерфейс IDataObject.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: Работа с COM объектом MapInfo (интерфейс IDataObject)
От: DEMON_UN  
Дата: 02.11.08 21:10
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Ну значит не поддерживает твой объект интерфейс IDataObject.


дело в том, что на тематических форумах (ответа там я так и не получил тем не менее) да и в документации есть чёткое подтверждение, что данные слить по этому интерфейсу можно, другое дело как... где-то что-то видимо я делаю не так

вот выдержка из справки:

Метод: DataObject( windowID )
Возвращает интерфейс IUnknown, представляющий это
окно. Для получения графического представления окна в
виде метафайла используйте QueryInterface для интерфейса
IDataObject.
Только значения IDataObject и IUnknown разрешены для
этого объекта.

Re[3]: Работа с COM объектом MapInfo (интерфейс IDataObject)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.11.08 21:37
Оценка: +1
Здравствуйте, DEMON_UN, Вы писали:

DEM>Метод: DataObject( windowID )


А теперь посмотри внимательно на свой код.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[4]: Работа с COM объектом MapInfo (интерфейс IDataObject)
От: DEMON_UN  
Дата: 09.11.08 16:00
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А теперь посмотри внимательно на свой код.


Не подскажешь как теперь получить
IntPtr

от
m_object.DataObject(0)

?
Re[5]: Работа с COM объектом MapInfo (интерфейс IDataObject)
От: Аноним  
Дата: 11.11.08 08:52
Оценка:
DEM>Не подскажешь как теперь получить
DEM>
DEM>IntPtr
DEM>

DEM> от
DEM>
DEM>m_object.DataObject(0)
DEM>


Marshal.GetComInterfaceForObject
Re[6]: Работа с COM объектом MapInfo (интерфейс IDataObject)
От: DEMON_UN  
Дата: 15.01.09 16:46
Оценка:
А>Marshal.GetComInterfaceForObject


Я сделал так:
IntPtr pIUnk;
IntPtr pD;
Guid g_IDO = typeof(IDataObject).GUID;
pIUnk = Marshal.GetIUnknownForObject(m_object.DataObject(0));
int t_r = Marshal.QueryInterface(pIUnk, ref g_IDO, out pD);


в результате "No such interface supported"

кстати можете пояснить почему в данном случае g_IDO получается как {3cee8cc1-1adb-327f-9b97-7a9c8089bfb3}? если присвоить именно {0000010e-0000-0000-C000-000000000046}, то
QueryInterface

срабатывает, но в дальнейшем при
GetObjectForIUnknown

та же проблема...
Re[7]: Работа с COM объектом MapInfo (интерфейс IDataObject)
От: Аноним  
Дата: 15.01.09 17:17
Оценка:
Кстати, а чем должен быть m_object.DataObject(0) исходя из справочных данных? На практике это System.__ComObject
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.