Позднее, очень позднее связывание, Automation...
Темный
Дата: 02.06.2004 19:22:13
Позднее, очень позднее связывание, Automation...
Есть:
БД на Аксе XP и сервер Automation - электроная карта.
Нуна:
Управлять из БД этой самой картой.
Проблема:
При CreateObject все работает замечательно. И создает, и управляется.
Set MyObj = CreateObject("Mom.Document")
Но при GetObject - ну никак не хочет (надо подцепить уже загруженную извне карту)
Set MyObj = GetObject(,"Mom.Document")
Пробовал по-разному. С указанием пути и без. Кстати, если путь (первый параметр) сделать = "", то запутится новый инстанс. Чего ну совсем не надо.
Может быть можно использовать что-нить АПИшное?
Victosha
Дата: 02.06.2004 19:43:00
вот подумал - видимо глупость (умности думать не получается - палец кривой - ко лбу не приставляется)
почему есть уверенность, что к нему - загруженному объекту можно гарантированно подключиться?
что, если тот объект принципиально Thread per Object ?
Victosha
Дата: 02.06.2004 19:45:05
полистай реестр.
возможно у того mom есть другие объекты, кроме Document, к которым на самом деле и надо GetObject
Темный
Дата: 02.06.2004 19:51:22
Э-э-э.... А что такое TpO?
В реестре сказали, что кроме Document ничего больше нетути, мля...
Victosha
Дата: 02.06.2004 20:08:21
я же говорил, что глупость скажу - TPo, может быть тут вовсе не причем...
а сказать я пытался, что - вдруг объект типа принципально "однопользовательский"? Создатель владеет им монопольно.
Хотя это сильно нехарактерно для ком-автоматизации...
Возможно, ему просто в реализации не хватает некоего интерфейса, что-бы до него можно было через GetObject достукиваться...
Ты уж извини, что я "брях" сказал...
про TPo
на VB можно создавать АктивИКС DLL\ЕХЕ проекты, различающиеся моделями "многопоточности" и схемой выделения "потоков" для новых объектов.
вот кусок из хелпа
Threading Model
Threading Model List —The threading model list box is only activated for ActiveX.dlls and ActiveX Control projects. The only options are single-threaded and apartment-threaded.
Thread per Object — Indicates that each instance of a class marked as Multiuse in the Instancing property will be created on a new and distinct thread. Each thread has a unique copy of all global variables and objects, and will not interfere with any other thread.
Thread Pool — Indicates that each instance of a class marked as Multiuse in the Instancing property will be created on a thread from the thread pool. The choice of thread is determined in a round-robin fashion. Each thread has a unique copy of all global variables, but multiple instances reside on a given thread and can potentially interfere with each other.
Number of threads — Determines the maximum number of threads created for the thread pool. When a Multiuse class is instantiated, threads are created as needed up to the number set here. After the maximum number is reached, Visual Basic begins assigning new instances to existing threads.
Темный
Дата: 02.06.2004 20:13:37
| | автор |
| | Возможно, ему просто в реализации не хватает некоего интерфейса, что-бы до него можно было через GetObject достукиваться... |
Блин, нехорошо как-то получается...
Единственное, что знаю, так это то, на чем писана карта - Visual C++.
Да, сайт создателя -
http://www.map.ru
Темный
Дата: 02.06.2004 20:26:56
Вопрос снят с повестки дня. Разаработчик сказал, что сие нельзя сделать пока. Экая жалость... Буду криэйтить...
Темный
Дата: 04.06.2004 16:56:39
Если кому-то интересно...
Рассказ разработчика MOM.
Есть 3 типа "окошек" приложения:
1) Диалоговые окна.
2) Однодокументные приложения.
3) Многодокументные приложения.
Диалоговые имеют объект Application, к которому надо обращаться через GetObject.
Однодокументные имеют объект Document.
И, наконец, многодокументные иеют и Document, и Application.
И, получается, что GetObject может работать только с теми, у кого есть Application?
У кого какой опыт работы с Automation? Делитесь!