Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Как подключиться к Ингео из VB.NET

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
АлексейЛ



Зарегистрирован: 03.06.2009
Сообщения: 6

СообщениеДобавлено: Ср 03 Июн 2009 10:22    Заголовок сообщения: Как подключиться к Ингео из VB.NET Ответить с цитатой

Здравствуйте!

возможно ли подключиться к приложению Ингео из внешней программы, написанной на VB.NET 2003?

Сейчас делаю так:
в Reference добавил COM библиотеку Ингео

пытаюсь создать соединение
Dim ingeoApp As Object = CreateObject("Ingeo.IngeoApplication")
и возникает исключение

успешно проходит операция
Dim mx As Object = CreateObject("IngeoMapX.IngeoMapXControl")
и mx не пустой

что я делаю не так?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Воинов Вячеслав



Зарегистрирован: 04.06.2009
Сообщения: 1

СообщениеДобавлено: Чт 04 Июн 2009 13:14    Заголовок сообщения: Ответить с цитатой

если ИнГео активно, то можно попробовать вот так
System.Runtime.InteropServices.Marshal.GetActiveObject(progID)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АлексейЛ



Зарегистрирован: 03.06.2009
Сообщения: 6

СообщениеДобавлено: Чт 04 Июн 2009 13:41    Заголовок сообщения: Ответить с цитатой

не помогает
подозреваю, что проблема в том, что неверно указываю progID
в реестре нет объекта с clsid Ingeo.IngeoApplication
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Михаил Власов



Зарегистрирован: 14.02.2005
Сообщения: 580
Откуда: ИНТЕГРО

СообщениеДобавлено: Чт 04 Июн 2009 14:37    Заголовок сообщения: Ответить с цитатой

Пример на C#:

Код:
[DllImport("oleaut32.dll", PreserveSig = false)]
private static extern void GetActiveObject(ref Guid rclsid, IntPtr reserved, [MarshalAs(UnmanagedType.Interface)] out object ppunk);

public static object GetActiveIngeo()
{
   Guid ingeoClsId = new Guid("{04088492-0485-11D4-9719-000021C6D845}");
   object ingeo;
   GetActiveObject(ref ingeoClsId, IntPtr.Zero, out ingeo);
   return ingeo;
}

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Михаил Власов



Зарегистрирован: 14.02.2005
Сообщения: 580
Откуда: ИНТЕГРО

СообщениеДобавлено: Чт 04 Июн 2009 14:41    Заголовок сообщения: Ответить с цитатой

Если поискать у нас на форуме, то можно наткнуться на такую ветку:
http://www.integro.ru/forum/viewtopic.php?t=537

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Кузнецова Татьяна



Зарегистрирован: 23.09.2009
Сообщения: 2
Откуда: Рязань

СообщениеДобавлено: Ср 23 Сен 2009 14:01    Заголовок сообщения: Ответить с цитатой

Использую код
public IngeoApplication GetActiveIngeo()
{
IntPtr ppunk;
Guid rclsid = new Guid("{09EFE6F8-BDB7-486B-9874-4BF30B561A8C}");
GetActiveObject(ref rclsid, IntPtr.Zero, out ppunk);
if (ppunk.ToInt32() != 0) return Marshal.GetObjectForIUnknown(ppunk) as IngeoApplication;
else return null;
}
Программа на VS 2008, но почему то ppunk всегда пусть. Подскажите в чем причина, иожет еще что-то надо сделать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Алексей В. Бастриков



Зарегистрирован: 02.06.2008
Сообщения: 118
Откуда: ООО "Инфопроект", г. Екатеринбург

СообщениеДобавлено: Ср 23 Сен 2009 16:52    Заголовок сообщения: Ответить с цитатой

Откуда берете GUID? Мне кажется вы не тот используете... Rolling Eyes
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Кузнецова Татьяна



Зарегистрирован: 23.09.2009
Сообщения: 2
Откуда: Рязань

СообщениеДобавлено: Ср 23 Сен 2009 18:45    Заголовок сообщения: Ответить с цитатой

Алексей В. Бастриков писал(а):
Откуда берете GUID? Мне кажется вы не тот используете... Rolling Eyes

Все спасибо, вопрос решился, брали GUID базы данных Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Алексей В. Бастриков



Зарегистрирован: 02.06.2008
Сообщения: 118
Откуда: ООО "Инфопроект", г. Екатеринбург

СообщениеДобавлено: Пт 04 Дек 2009 10:57    Заголовок сообщения: Ответить с цитатой

GUID для подключения к ИнГЕО можно получить следующим образм:

System.Guid GUID;
string StartupPath = System.Windows.Forms.Application.StartupPath;
string IngeoAssemblyPath = StartupPath + "\\Interop.Ingeo.dll";
System.Reflection.Assembly IngeoAssembly = System.Reflection.Assembly.LoadFile(IngeoAssemblyPath);
System.Type IngeoAppClass = IngeoAssembly.GetType("Ingeo.IngeoApplicationClass");
GUID = IngeoAppClass.GUID;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB