Интегрированная картография. Использование MBX. C#

MapInfo, MapBasic
Ответить
LilLoco
Новоприбывший
Сообщения: 12
Зарегистрирован: 09 янв 2013, 11:01
Репутация: 0

Интегрированная картография. Использование MBX. C#

Сообщение LilLoco » 09 янв 2013, 11:14

Добрый день. Помогите пожалуйста.
Необходимо передать параметры в mbx программу. Делал по примеру: тут

Код: Выделить всё

Include "MAPBASIC.DEF"  
Include "MENU.DEF"  

Declare Sub RemoteMsgHandler   
Declare Sub Main   

 Sub Main  
    ' We don't need to doing anything here.  
 End Sub   

Sub RemoteMsgHandler   
	Dim command as String   
	 'Call commandinfo to get the string that was sent to us.   
	command = CommandInfo(CMD_INFO_MSG)   
	 Note command   
 End Sub  
В программе:

Код: Выделить всё

Type mapinfotype = Type.GetTypeFromProgID("Mapinfo.Application");
            DMapInfo mapinfoinstance = (DMapInfo)Activator.CreateInstance(mapinfotype);
            mapinfoinstance.Visible = true;
            string appcommand = "Run Application " + "\"" + @"D:\trymi.MBX" + "\"";
            mapinfoinstance.Do(appcommand);
            DMBApplications MBApps = (DMBApplications)mapinfoinstance.MBApplications;
foreach (DMapBasicApplication app in MBApps)   
            {
                if (app.Name == "trymi.MBX")
                {
                    myapp = app;
                    break;
                }
            }
При выполнении, на строке DMapBasicApplication app in MBApps появляется ошибка: Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу "MapInfo.DMapBasicApplication". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{1D42EC67-7B28-11CE-B83D-00AA002C4F58}" возвратил следующую ошибку: Интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

Уже всю голову сломал, не знаю что не так.
MapInfo 7.8, MS Visual Studio Express 2010

Cancer
Участник
Сообщения: 56
Зарегистрирован: 25 фев 2009, 20:55
Репутация: 3
Откуда: Инструментарий для MapInfo
Контактная информация:

Re: Интегрированная картография. Использование MBX. C#

Сообщение Cancer » 21 янв 2013, 19:22

Вот правильный код:

Код: Выделить всё

DMBApplications MBApps = (DMBApplications)mapinfoinstance.MBApplications;
здесь жесткое приведение типов (насколько я понимаю в C#)

Здесь не очень:

Код: Выделить всё

foreach (DMapBasicApplication app in MBApps) 
Надо что-то вроде:

Код: Выделить всё

DMapBasicApplication app = (DMapBasicApplication)MBApps.Items[1];
Как-то так, за синтаксис не ручаюсь, надеюсь понял суть. Да, еще - типы DMapBasicApplications, DMapBasicApplication неплохо бы показать.

LilLoco
Новоприбывший
Сообщения: 12
Зарегистрирован: 09 янв 2013, 11:01
Репутация: 0

Re: Интегрированная картография. Использование MBX. C#

Сообщение LilLoco » 23 янв 2013, 16:13

Cancer писал(а):типы DMapBasicApplications, DMapBasicApplication неплохо бы показать
Не понял. Где, что показать?

Спасибо. Как будет свободное время, попробую. Отпишусь. Не стал разбираться, время поджимало, решил делать все в MapBasic =(

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя