Здравствуйте.
Непосредственно с COM объектом проблем нет, когда приходится выполнять "стандартные" действия, но вот (как я понимаю это единственная возможность заполучить граф. объект, исключая экспорт) при попытке получить ссылку на интерфейс получается ...No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). Дейсвую по учебнику, т.е. используя явное приведение типов:
MapInfo.MapInfoApplicationClass m_object = new MapInfo.MapInfoApplicationClass();
...
IDataObject dataObject;
dataObject = (IDataObject) m_object;
...
Здравствуйте, DEMON_UN, Вы писали:
Ну значит не поддерживает твой объект интерфейс IDataObject.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Ну значит не поддерживает твой объект интерфейс IDataObject.
дело в том, что на тематических форумах (ответа там я так и не получил тем не менее) да и в документации есть чёткое подтверждение, что данные слить по этому интерфейсу можно, другое дело как... где-то что-то видимо я делаю не так
вот выдержка из справки:
Метод: DataObject( windowID )
Возвращает интерфейс IUnknown, представляющий это
окно. Для получения графического представления окна в
виде метафайла используйте QueryInterface для интерфейса
IDataObject.
Только значения IDataObject и IUnknown разрешены для
этого объекта.
Здравствуйте, DEMON_UN, Вы писали:
DEM>Метод: DataObject( windowID )
А теперь посмотри внимательно на свой код.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, AndrewVK, Вы писали:
AVK>А теперь посмотри внимательно на свой код.
Не подскажешь как теперь получить
IntPtr
от
m_object.DataObject(0)
?
DEM>Не подскажешь как теперь получить
DEM>DEM>IntPtr
DEM>
DEM> от
DEM>DEM>m_object.DataObject(0)
DEM>
Marshal.GetComInterfaceForObject
А>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
та же проблема...