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

Script.Disp

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



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

СообщениеДобавлено: Вт 30 Авг 2011 13:17    Заголовок сообщения: Script.Disp Ответить с цитатой

Что за странный объект Script.Disp?

public void Start(object disp)
{
IngeoApplication app = disp.GetType().InvokeMember("Application", BindingFlags.GetProperty, Type.DefaultBinder, disp, null) as IngeoApplication;

возвращает реальный указатель на приложение ИнГЕО

foreach (MemberInfo member in app.GetType().GetMembers())
{
MessageBox.Show(member.Name);
}

среди member-ов Application-а и других свойств и методов из программного модуля не находится
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Вт 30 Авг 2011 13:50    Заголовок сообщения: Ответить с цитатой

а этот код к чему относится и где запускается?
_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Алексей В. Бастриков



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

СообщениеДобавлено: Вт 30 Авг 2011 14:19    Заголовок сообщения: Ответить с цитатой

код содержится в com сервере, экземпляр которого создается из программного модуля.
метод Start вызывается при запуске программного модуля, в качестве параметра методу Start передается объект Script.Disp.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Алексей В. Бастриков



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

СообщениеДобавлено: Вт 30 Авг 2011 14:42    Заголовок сообщения: Ответить с цитатой

Просто хотелось бы подробнее узнать о структуре данного объекта, механизме его работы, какие интерфейсы он реализует, ...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Вт 30 Авг 2011 18:39    Заголовок сообщения: Ответить с цитатой

видимо придётся отвечать(предполагать) за вас, а вы скажете правильно ли я предположил:
1) вы пишете модуль на C#, имеете целью написать COM-объект, вызываемый из imn в Ингео
2) в inm вы вызываете функцию
myComObj.Start Application
3) в С# вам приходится из переменной типа "object" доставать ссылку на приложение способом, который вы показали.

соответственно ваш вопрос: какие есть методы и свойства у "object" в C#, которые вы могли бы как то использовать в неизвестных целях? так?
в такой формулировке, т.к. я не являюсь специалистом по с#, рекомендую вам обратится к MSDN.


p.s.: описывайте больше подробносей относительно контекста вашего вопроса, часто люди, читающие форум и пытающиеся помоч, не находятся с вами в ментальном контакте Smile

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Алексей В. Бастриков



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

СообщениеДобавлено: Ср 31 Авг 2011 09:03    Заголовок сообщения: Ответить с цитатой

Да, действительно, у меня есть com объект на c# (но это не важно, то же самое можно сделать и на c++, и на delphi...), но в метод Start передается не Application, а Script.Disp

dim ComObject

sub Module_StartComplete()
set ComObject = CreateObject("ComServer.ComObject")
ComObject.Start Script.Disp
end sub

Это эксперимент Wink

Я хотел узнать, какие свойства и методы предоставляет этот объект, какие интерфейсы реализует, как его можно полезно использовать? Может для обработки событий или что нибудь подобное...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Ср 31 Авг 2011 13:16    Заголовок сообщения: Ответить с цитатой

ага. теперь понятно.
выполните в ингео
Код:
sub tryDisp
   msgbox typename(Script.disp)
end sub


вообще вам нужно копать вот в эту сторону http://msdn.microsoft.com/en-us/library/aa227637(v=VS.60).aspx
вобщем в сторону - как делается создание скриптовых вставок в Ингео

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Алексей В. Бастриков



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

СообщениеДобавлено: Чт 01 Сен 2011 09:08    Заголовок сообщения: Ответить с цитатой

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



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

СообщениеДобавлено: Пт 02 Сен 2011 13:26    Заголовок сообщения: Ответить с цитатой

Script.Disp - это ваш скрипт в виде COM-объекта. Набор свойств и методов формируется из переменных (dim) и процедур/функций вашего скрипта.
Так что не ищите его в ИнГео API или в MSDN, не найдете. Вы сами являетесь создателем этого объекта.

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



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

СообщениеДобавлено: Чт 15 Сен 2011 11:03    Заголовок сообщения: Ответить с цитатой

Провел небольшое исследование.
Простым перебором разделов в ветке HKEY_CLASSES_ROOT\Interface реестра и с использованием Marshal.QueryInterface узнал, что Script.Disp приводится к интерфейсу IDispatchEx, которому в .net соответствует интерфейс IExpando, позволяющий динамически добавлять свойства, поля и методы в объект. Со свойствами получается, а вот с методами возвращает ошибку idispatchex does not support adding methods.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Михаил Власов



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

СообщениеДобавлено: Чт 15 Сен 2011 15:00    Заголовок сообщения: Ответить с цитатой

Я же написал:
Михаил Власов писал(а):
Script.Disp - это ваш скрипт в виде COM-объекта. Набор свойств и методов формируется из переменных (dim) и процедур/функций вашего скрипта.
Так что не ищите его в ИнГео API или в MSDN, не найдете. Вы сами являетесь создателем этого объекта.

Script.Disp предназначен для доступа к переменным (dim)и процедурам(sub)/функциям(function), определенным в вашем гисовском скрипте.
Из .net это можно сделать только через рефлекшен или посредством переменных объявленных с ключевым словом dynamic.
Не пойму, что вы пытаетесь там еще найти и зачем?

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



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

СообщениеДобавлено: Чт 15 Сен 2011 15:09    Заголовок сообщения: Ответить с цитатой

Например, добавлять обработчики событий ИнГЕО не в скрипте, а внутри собственного com-сервера
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Михаил Власов



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

СообщениеДобавлено: Чт 15 Сен 2011 15:40    Заголовок сообщения: Ответить с цитатой

Используйте делегирование событий из скриптовых обработчиков в методы обработки COM-объектов.

Это рекомендованная нами практика подключения внешних модулей, реализованных в виде COM-объектов (включая .NET-объекты).

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

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


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