| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		АлексейЛ
 
 
  Зарегистрирован: 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 Откуда: ИНТЕГРО
  | 
		 | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Кузнецова Татьяна
 
 
  Зарегистрирован: 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? Мне кажется вы не тот используете...   | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Кузнецова Татьяна
 
 
  Зарегистрирован: 23.09.2009 Сообщения: 2 Откуда: Рязань
  | 
		
			
				 Добавлено: Ср 23 Сен 2009 18:45    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Алексей В. Бастриков писал(а): | 	 		  Откуда берете GUID? Мне кажется вы не тот используете...   | 	  
 
Все спасибо, вопрос решился, брали GUID базы данных   | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Алексей В. Бастриков
 
 
  Зарегистрирован: 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; | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |